
=head1 НАЗВА

virt-sysprep — скидання налаштувань віртуальної машини до початкових, так,
щоб з неї можна було роботи клони

=head1 КОРОТКИЙ ОПИС

 virt-sysprep [--параметри] -d назва_домену

 virt-sysprep [--параметри] -a disk.img [-a disk.img ...]

=head1 ОПИС

Virt-sysprep can reset or unconfigure a virtual machine so that clones can
be made from it.  Steps in this process include removing SSH host keys,
removing persistent network MAC configuration, and removing user accounts.
Virt-sysprep can also customize a virtual machine, for instance by adding
SSH keys, users or logos.  Each step can be enabled or disabled as required.

Virt-sysprep modifies the guest or disk image I<in place>.  The guest must
be shut down.  If you want to preserve the existing contents of the guest,
I<you must snapshot, copy or clone the disk first>.  See L</COPYING AND
CLONING> below.

You do I<not> need to run virt-sysprep as root.  In fact we'd generally
recommend that you don't.  The time you might want to run it as root is when
you need root in order to access the disk image, but even in this case it
would be better to change the permissions on the disk image to be writable
as the non-root user running virt-sysprep.

"Sysprep" stands for "system preparation" tool.  The name comes from the
Microsoft program F<sysprep.exe> which is used to unconfigure Windows
machines in preparation for cloning them.  Having said that, virt-sysprep
does I<not> currently work on Microsoft Windows guests.  We plan to support
Windows sysprepping in a future version, and we already have code to do it.

=head1 ПАРАМЕТРИ

=over 4

=item B<--help>

Показати коротку довідку.

=item B<-a> файл

=item B<--add> файл

Додати I<файл>, який має бути образом диска з віртуальної машини.

Формат образу диска визначається автоматично. Щоб перевизначити його і
примусово використати певний формат, скористайтеся параметром I<--format>.

=item B<-a> адреса

=item B<--add> адреса

Додати віддалений диск. Формат адреси є сумісним із
guestfish. Див. L<guestfish(1)/ДОДАВАННЯ ВІДДАЛЕНОГО СХОВИЩА>.

=item B<--colors>

=item B<--colours>

Використовувати послідовності символів ANSI для розфарбовування
повідомлень. Ці послідовності типово використовуються, якщо дані виводяться
на термінал tty.  Якщо дані, виведені програмою, спрямовуються до файла,
послідовності визначення кольорів ANSI буде вимкнено, якщо ви не додасте до
команди цей параметр.

=item B<-c> адреса

=item B<--connect> адреса

Якщо використовується libvirt, встановити з’єднання з вказаним I<URI>. Якщо
пропущено, з’єднання буде встановлено з типовим гіпервізором libvirt.

Якщо вказати блокові пристрої гостьових систем безпосередньо (I<-a>),
libvirt не буде використовуватися взагалі.

=item B<-d> гість

=item B<--domain> гість

Додати всі диски з вказаної гостьової системи libvirt. UUID доменів можна
використовувати замість назв.

=item B<-n>

=item B<--dry-run>

Виконати тестову обробку гостьової системи у режимі «лише читання». Буде
виконано дію sysprep, але наприкінці усі зміни до диска буде відкинуто.

=item B<--enable> дії

Choose which sysprep operations to perform.  Give a comma-separated list of
operations, for example:

 --enable ssh-hostkeys,udev-persistent-net

would enable ONLY C<ssh-hostkeys> and C<udev-persistent-net> operations.

If the I<--enable> option is not given, then we default to trying most
sysprep operations (see I<--list-operations> to show which are enabled).

Regardless of the I<--enable> option, sysprep operations are skipped for
some guest types.

Use I<--list-operations> to list operations supported by a particular
version of virt-sysprep.

See L</OPERATIONS> below for a list and an explanation of each operation.

=item B<--operation> дії

=item B<--operations> дії

Choose which sysprep operations to perform.  Give a comma-separated list of
operations, for example:

 --operations ssh-hostkeys,udev-persistent-net

would enable ONLY C<ssh-hostkeys> and C<udev-persistent-net> operations.

I<--operations> allows you to enable and disable any operation, including
the default ones (which would be tried when specifying neither
I<--operations> nor I<--enable>) and all the available ones; prepending a
C<-> in front of an operation name removes it from the list of enabled
operations, while the meta-names C<defaults> and C<all> represent
respectively the operations enabled by default and all the available ones.
For example:

 --operations firewall-rules,defaults,-tmp-files

would enable the C<firewall-rules> operation (regardless whether it is
enabled by default), all the default ones, and disable the C<tmp-files>
operation.

I<--operations> can be specified multiple times; the first time the set of
enabled operations is empty, while any further I<--operations> affects the
operations enabled so far.

If the I<--operations> option is not given, then we default to trying most
sysprep operations (see I<--list-operations> to show which are enabled).

Regardless of the I<--operations> option, sysprep operations are skipped for
some guest types.

Use I<--list-operations> to list operations supported by a particular
version of virt-sysprep.

See L</OPERATIONS> below for a list and an explanation of each operation.

=item B<--echo-keys>

Типово, якщо virt-sysprep попросить вас ввести ключ або пароль, програма не
відтворюватиме введені символи на екрані. Якщо ви не боїтеся
TEMPEST-нападів, або у вашій кімнаті нікого, окрім вас, немає, ви можете
скористатися цим прапорцем, щоб бачити, які саме символи ви вводите.

=item B<--format> raw|qcow2|..

=item B<--format> auto

Типовим значенням для параметра I<-a> є автоматичне визначення формату
образу диска. Використання цього параметра примусово визначає значення
параметрів I<-a> формату диска у наступному рядку команди. Використання
параметра I<--format auto> перемикає програму у режим автоматичного
визначення у наступних параметрах I<-a>.

Приклад:

 virt-sysprep --format raw -a disk.img

примусове встановлення формату без обробки (без автоматичного визначення)
для F<disk.img>.

 virt-sysprep --format raw -a disk.img --format auto -a another.img

примусове встановлення формату без обробки (без автоматичного визначення)
для F<diskimg> і повернення до автоматичного визначення для F<another.img>.

Якщо ви користуєтеся ненадійними образами гостьових систем у необробленому
форматі, вам слід скористатися цим параметром для визначення формату
диска. Таким чином можна уникнути можливих проблем з захистом для
сформованих зловмисниками гостьових систем (CVE-2010-3851).

=item B<--keys-from-stdin>

Прочитати параметри ключа або пароля із джерела стандартного
введення. Типово програма намагається читати паролі від користувача
відкриттям F</dev/tty>.

=item B<--list-operations>

List the operations supported by the virt-sysprep program.

These are listed one per line, with one or more single-space-separated
fields, eg:

 $ virt-sysprep --list-operations
 bash-history * Remove the bash history in the guest
 cron-spool * Remove user at-jobs and cron-jobs
 dhcp-client-state * Remove DHCP client leases
 dhcp-server-state * Remove DHCP server leases
 [etc]

The first field is the operation name, which can be supplied to
I<--enable>.  The second field is a C<*> character if the operation is
enabled by default or blank if not.  Subsequent fields on the same line are
the description of the operation.

Before libguestfs 1.17.33 only the first (operation name) field was shown
and all operations were enabled by default.

=item B<--mount-options> mp:opts[;mp:opts;...]

Set the mount options used when libguestfs opens the disk image.  Note this
has no effect on the guest.  It is used when opening certain guests such as
ones using the UFS (BSD) filesystem.

Use a semicolon-separated list of C<mountpoint:options> pairs.  You may need
to quote this list to protect it from the shell.

Приклад:

 --mount-options "/:noatime"

will mount the root directory with C<notime>.  This example:

 --mount-options "/:noatime;/var:rw,nodiratime"

will do the same, plus mount F</var> with C<rw,nodiratime>.

=item B<-q>

=item B<--quiet>

Не виводити повідомлення до журналу.

Для вмикання ведення докладного журналу окремих дій з файлами скористайтеся
I<-x>.

=item B<--network>

=item B<--no-network>

Увімкнути чи вимкнути доступ до мережі для гостьової системи під час
встановлення.

In virt-sysprep, the network is I<disabled> by default.  You must use
I<--network> to enable it, in order that options such as I<--install> or
I<--update> will work.

L<virt-builder(1)> has more information about the security advantages of
disabling the network.

=item B<-v>

=item B<--verbose>

Увімкнути докладний показ повідомлень з метою діагностики.

=item B<-V>

=item B<--version>

Показати дані щодо версії і завершити роботу.

=item B<-x>

Увімкнути трасування викликів програмного інтерфейсу libguestfs.

__EXTRA_OPTIONS__

=back

=head1 ДІЇ

If the I<--enable>/I<--operations> option is I<not> given, then most sysprep
operations are enabled.

Use C<virt-sysprep --list-operations> to list all operations for your
virt-sysprep binary.  The ones which are enabled by default are marked with
a C<*> character.  Regardless of the I<--enable>/I<--operations> options,
sysprep operations are skipped for some guest types.

Operations can be individually enabled using the I<--enable>/I<--operations>
options.  Use a comma-separated list, for example:

 virt-sysprep --operations ssh-hostkeys,udev-persistent-net [тощо..]

Future versions of virt-sysprep may add more operations.  If you are using
virt-sysprep and want predictable behaviour, specify only the operations
that you want to have enabled.

C<*> = enabled by default when no I<--enable>/I<--operations> option is
given.

__OPERATIONS__

=head1 КОПІЮВАННЯ ТА КЛОНУВАННЯ

Virt-sysprep can be used as part of a process of cloning guests, or to
prepare a template from which guests can be cloned.  There are many
different ways to achieve this using the virt tools, and this section is
just an introduction.

A virtual machine (when switched off) consists of two parts:

=over 4

=item I<налаштування>

The configuration or description of the guest.  eg. The libvirt XML (see
C<virsh dumpxml>), the running configuration of the guest, or another
external format like OVF.

Some configuration items that might need to be changed:

=over 4

=item *

назва

=item *

UUID

=item *

шлях до блокових пристроїв

=item *

MAC-адреса мережевої картки

=back

=item I<блокові пристрої>

One or more hard disk images, themselves containing files, directories,
applications, kernels, configuration, etc.

Ось деякі параметри всередині блокових пристроїв, які, можливо, доведеться
змінити:

=over 4

=item *

назва вузла та інші налаштування мережі

=item *

UUID

=item *

ключі SSH вузла

=item *

Windows unique security ID (SID)

=item *

Реєстрація маріонетки

=back

=back

=head2 КОПІЮВАННЯ БЛОКОВОГО ПРИСТРОЮ

Starting with an original guest, you probably wish to copy the guest block
device and its configuration to make a template.  Then once you are happy
with the template, you will want to make many clones from it.

                        virt-sysprep
                             |
                             v
 original guest --------> template ---------->
                                      \------> cloned
                                       \-----> guests
                                        \---->

You can, of course, just copy the block device on the host using L<cp(1)> or
L<dd(1)>.

                   dd                 dd
 original guest --------> template ---------->
                                      \------> cloned
                                       \-----> guests
                                        \---->

There are some smarter (and faster) ways too:

                          snapshot
                template ---------->
                            \------> cloned
                             \-----> guests
                              \---->

You may want to run virt-sysprep twice, once to reset the guest (to make a
template) and a second time to customize the guest for a specific user:

                    virt-sysprep        virt-sysprep
                      (reset)      (add user, keys, logos)
                         |                   |
                 dd      v          dd       v
 original guest ----> template ---------> copied ------> custom
                                          template       guest

=over 4

=item *

Create a snapshot using qemu-img:

 qemu-img create -f qcow2 -o backing_file=original snapshot.qcow

The advantage is that you don’t need to copy the original (very fast)  and
only changes are stored (less storage required).

Note that writing to the backing file once you have created guests on top of
it is not possible: you will corrupt the guests.

=item *

Create a snapshot using C<lvcreate --snapshot>.

=item *

Other ways to create snapshots include using filesystems-level tools (for
filesystems such as btrfs).

Most Network Attached Storage (NAS) devices can also create cheap snapshots
from files or LUNs.

=item *

Get your NAS to duplicate the LUN.  Most NAS devices can also duplicate LUNs
very cheaply (they copy them on-demand in the background).

=item *

Приготуйте ваш шаблон за допомогою L<virt-sparsify(1)>. Див. нижче.

=back

=head2 VIRT-CLONE

A separate tool, L<virt-clone(1)>, can be used to duplicate the block device
and/or modify the external libvirt configuration of a guest.  It will reset
the name, UUID and MAC address of the guest in the libvirt XML.

L<virt-clone(1)> does not use libguestfs and cannot look inside the disk
image.  This was the original motivation to write virt-sysprep.

=head2 SPARSIFY

              virt-sparsify
 original guest --------> template

L<virt-sparsify(1)> can be used to make the cloning template smaller, making
it easier to compress and/or faster to copy.

Notice that since virt-sparsify also copies the image, you can use it to
make the initial copy (instead of C<dd>).

=head2 ЗМІНА РОЗМІРІВ

                         virt-resize
                template ---------->
                            \------> cloned
                             \-----> guests
                              \---->

If you want to give people cloned guests, but let them pick the size of the
guest themselves (eg. depending on how much they are prepared to pay for
disk space), then instead of copying the template, you can run
L<virt-resize(1)>.  Virt-resize performs a copy and resize, and thus is
ideal for cloning guests from a template.

=head1 FIRSTBOOT VS SCRIPT

The two options I<--firstboot> and I<--script> both supply shell scripts
that are run against the guest.  However these two options are significantly
different.

I<--firstboot script> uploads the file C<script> into the guest and arranges
that it will run, in the guest, when the guest is next booted.  (The script
will only run once, at the "first boot").

I<--script script> runs the shell C<script> I<on the host>, with its current
directory inside the guest filesystem.

If you needed, for example, to C<yum install> new packages, then you I<must
not> use I<--script> for this, since that would (a) run the C<yum> command
on the host and (b) wouldn't have access to the same resources
(repositories, keys, etc.) as the guest.  Any command that needs to run on
the guest I<must> be run via I<--firstboot>.

On the other hand if you need to make adjustments to the guest filesystem
(eg. copying in files), then I<--script> is ideal since (a)  it has access
to the host filesystem and (b) you will get immediate feedback on errors.

Кожен з параметрів або обидва параметри можна використовувати у рядку
команди довільну кількість разів.

=head1 БЕЗПЕКА

Although virt-sysprep removes some sensitive information from the guest, it
does not pretend to remove all of it.  You should examine the L</OPERATIONS>
above and the guest afterwards.

Sensitive files are simply removed.  The data they contained may still exist
on the disk, easily recovered with a hex editor or undelete tool.  The
I<--scrub> option can be used to scrub files instead of just deleting them.
L<virt-sparsify(1)> is another way to remove this content.  See also the
L<scrub(1)> command to get rid of deleted content in directory entries and
inodes.

=head2 БАЗА ВИПАДКОВОСТІ

I<(Цей розділ стосується лише гостьових систем Linux)>

For supported guests, virt-sysprep writes a few bytes of randomness from the
host into the guest’s random seed file.

If this is just done once and the guest is cloned from the same template,
then each guest will start with the same entropy, and things like SSH host
keys and TCP sequence numbers may be predictable.

Therefore you should arrange to add more randomness I<after> cloning from a
template too, which can be done by enabling just the customize module:

 cp template.img newguest.img
 virt-sysprep --enable customize -a newguest.img

=head1 SELINUX

Для гостьових систем, у яких використовується SELinux, може знадобитися
спеціальна обробка, якщо використовуються дії, які створюють нові файли або
вносять зміни до наявних файлів.

Докладніший опис наведено у розділі L<virt-builder(1)/SELINUX>.

=head1 WINDOWS 8

Windows 8 "fast startup" can prevent virt-sysprep from working.  See
L<guestfs(3)/WINDOWS HIBERNATION AND WINDOWS 8 FAST STARTUP>.

=head1 СТАН ВИХОДУ

Ця програма повертає 0, якщо роботу виконано успішно, і 1, якщо сталися
помилки.

=head1 ЗМІННІ СЕРЕДОВИЩА

=over 4

=item C<VIRT_TOOLS_DATA_DIR>

Ця змінна визначає каталог, у якому містяться файли даних, які
використовуються для встановлення Windows з першим завантаженням.

Зазвичай, потреби у встановленні власного значення немає. Якщо значення не
встановлено, буде використано вбудоване типове значення (щось схоже на
F</usr/share/virt-tools>).

Цей каталог може містити такі файли:

=over 4

=item F<rhsrvany.exe>

Це виконуваний файл для Windows RHSrvAny, який використовується для
встановлення скрипту «firstboot» у гостьові системи Windows. Він
знадобиться, якщо ви маєте намір використовувати параметри I<--firstboot> і
I<--firstboot-command> для гостьових операційних систем Windows.

Див. також C<https://github.com/rwmjones/rhsrvany>

=item F<pvvxsvc.exe>

Це виконуваний файл Windows, що постачається разом із VMDP SUSE,
використовується для встановлення скрипту «firstboot» у гостьові системи
Windows. Він знадобиться, якщо ви маєте намір використовувати параметри
I<--firstboot> і I<--firstboot-command> для гостьових операційних систем
Windows.

=back

=back

Опис інших змінних середовища наведено у розділі L<guestfs(3)/ENVIRONMENT
VARIABLES>.

=head1 ТАКОЖ ПЕРЕГЛЯНЬТЕ

L<guestfs(3)>, L<guestfish(1)>, L<virt-builder(1)>, L<virt-clone(1)>,
L<virt-customize(1)>, L<virt-rescue(1)>, L<virt-resize(1)>,
L<virt-sparsify(1)>, L<virsh(1)>, L<lvcreate(8)>, L<qemu-img(1)>,
L<scrub(1)>, L<http://libguestfs.org/>, L<http://libvirt.org/>.

=head1 АВТОРИ

Richard W.M. Jones L<http://people.redhat.com/~rjones/>

Wanlong Gao, Fujitsu Ltd.

=head1 АВТОРСЬКІ ПРАВА

Copyright (C) 2011-2018 Red Hat Inc.

Авторські права належать Fujitsu Ltd., 2012

