Scroll to navigation

virt-customize(1) Virtualization Support virt-customize(1)

НАЗВА

virt-customize — налаштовування віртуальної машини

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

 virt-customize
    [ -a диск.img [ -a диск.img ... ] | -d назва домену ]
    [--attach файл ISO] [--attach-format ФОРМАТ]
    [ -c АДРЕСА | --connect АДРЕСА ] [ -n | --dry-run ]
    [ --format ФОРМАТ] [ -m МБ | --memsize МБ ]
    [ --network | --no-network ]
    [ -q | --quiet ] [--smp N] [ -v | --verbose ] [-x]
 virt-customize [ -V | --version ]

ОПИС

За допомогою virt-customize можна налаштувати віртуальну машину (образ диска) встановленням пакунків, редагуванням файлів налаштувань тощо.

Virt-customize вносить зміни до гостьової системи або образу диска на місці. Гостьова система має бути вимкненою. Якщо ви хочете зберегти наявний вміст гостьової системи, вам слід спочатку зробити її знімок, скопіювати або клонувати її диск.

Вам не потрібно запускати virt-customize від імені користувача root. Фактично, запуск у такому режимі є нерекомендованим.

Пов'язані інструменти: virt-sysprep(1) і virt-builder(1).

ПАРАМЕТРИ

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

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

Додати віддалений диск. Формат адреси є сумісним із guestfish. Див. "ДОДАВАННЯ ВІДДАЛЕНОГО СХОВИЩА" in guestfish(1).
Вказаний диск долучається до базової системи libguestfs. Цей диск використовується для отримання даних додаткових сховищ програмного забезпечення або інших даних для створення нетипової системи.

Ймовірно, вам варто додати мітки для долучених дисків (або скористатися назвою тому ISO), щоб надалі монтувати диски за міткою у ваших скриптах запуску:

 mkdir /tmp/mount
 mount LABEL=EXTRA /tmp/mount
    

Параметр --attach можна вказати декілька разів, а форматом може бути будь-який формат образу (не лише ISO).

Вказати формат диска для наступного параметра --attach. Значенням аргументу "ФОРМАТ" зазвичай є "raw" або "qcow2". Для образів ISO скористайтеся варіантом "raw".
Використовувати послідовності символів ANSI для розфарбовування повідомлень. Ці послідовності типово використовуються, якщо дані виводяться на термінал tty. Якщо дані, виведені програмою, спрямовуються до файла, послідовності визначення кольорів ANSI буде вимкнено, якщо ви не додасте до команди цей параметр.
Якщо використовується libvirt, встановити з’єднання з вказаним URI. Якщо пропущено, з’єднання буде встановлено з типовим гіпервізором libvirt.

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

Додати всі диски з вказаної гостьової системи libvirt. UUID доменів можна використовувати замість назв.
Виконати тестову обробку гостьової системи у режимі «лише читання». Буде виконано дію sysprep, але наприкінці усі зміни до диска буде відкинуто.
Типово, якщо virt-customize попросить вас ввести ключ або пароль, програма не відтворюватиме введені символи на екрані. Якщо ви не боїтеся TEMPEST-нападів, або у вашій кімнаті нікого, окрім вас, немає, ви можете скористатися цим прапорцем, щоб бачити, які саме символи ви вводите.
Типовим значенням для параметра -a є автоматичне визначення формату образу диска. Використання цього параметра примусово визначає значення параметрів -a формату диска у наступному рядку команди. Використання параметра --format auto перемикає програму у режим автоматичного визначення у наступних параметрах -a.

Приклад:

 virt-customize --format raw -a диск.img
    

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

 virt-customize --format raw -a диск.img --format auto -a іще_диск.img
    

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

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

Specify a key for LUKS, to automatically open a LUKS device when using the inspection. "ID" can be either the libguestfs device name, or the UUID of the LUKS device.
Використовувати вказаний "РЯДОК_КЛЮЧА" як пароль.
Прочитати пароль з файла НАЗВА_ФАЙЛА.
Прочитати параметри ключа або пароля із джерела стандартного введення. Типово програма намагається читати паролі від користувача відкриттям /dev/tty.

If there are multiple encrypted devices then you may need to supply multiple keys on stdin, one per line.

Зміна обсягу пам'яті, наданого скриптам --run. Збільште це значення, якщо виявиться, що для використання скриптів --run або параметра --install не вистачає пам'яті.

Типові значення можна визначити за допомогою такої команди:

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

Типово увімкнено. Скористайтеся параметром --no-network, щоб вимкнути доступ.

У мережі працюватимуть лише вихідні з'єднання, а також буде декілька інших незначних обмежень. Див. "МЕРЕЖА" in virt-rescue(1).

Якщо ви скористаєтеся параметром --no-network, тоді інші параметри, зокрема --install, не працюватимуть.

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

Загалом кажучи, вам не варто використовувати --no-network. Але ось декілька випадків, коли у вас може виникнути потреба у використанні цього параметра:

1.
У модулі обробки libguestfs, яким ви користуєтеся, не передбачено підтримки мережі. (Див. "МОДУЛЬ" in guestfs(3)).
2.
Усе програмне забезпечення, яке ви маєте намір встановити, походить з долученого образу ISO, отже потреби у мережі немає.
3.
Ви не хочете, щоб ненадійний код із гостьової системи намагався отримати доступ до мережевого з'єднання вашої основної системи під час роботи virt-customize. Таке, зокрема, може трапитися, якщо ви не довіряєте джерелу шаблонів операційних систем. (Див. "БЕЗПЕКА" нижче).
4.
Ви не хочете користуватися мережею основної системи (наприклад, через захищеність або обмеженість середовища у ній).
Не виводити повідомлення до журналу.

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

Увімкнути N ≥ 2 віртуальних процесорів для використання у скриптах --run.
Увімкнути докладний показ повідомлень з метою діагностики.
Показати дані щодо версії і завершити роботу.
Увімкнути трасування викликів програмного інтерфейсу libguestfs.

Параметри налаштовування

Дописати один рядок тексту до файла "ФАЙЛ". Якщо файл ще не завершується порожнім рядком, такий рядок буде додано перед дописаним. Крім того, автоматично буде дописано символ нового рядка наприкінці рядка "РЯДОК".

Наприклад, (припускаємо, що у командній оболонці використовуються звичайні лапки) така команда:

 --append-line '/etc/hosts:10.0.0.1 foo'
    

додасть "10.0.0.1 foo⏎" або "⏎10.0.0.1 foo⏎" до файла; останній запис буде додано, лише якщо наявний файл ще не закінчується символом нового рядка.

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

Щоб додати декілька рядків, скористайтеся тим самим параметром декілька разів:

 --append-line '/etc/hosts:10.0.0.1 foo'
 --append-line '/etc/hosts:10.0.0.2 bar'
    

Щоб додати порожній рядок перед дописаним рядком, скористайтеся такою конструкцією:

 --append-line '/etc/hosts:'
 --append-line '/etc/hosts:10.0.0.1 foo'
    
Змінити права доступу до файла "ФАЙЛ" на "ПРАВА_ДОСТУПУ".

Зауваження: типово "ПРАВА_ДОСТУПУ" записуються у десятковому форматі, якщо ви не додасте початковий 0 , щоб вказати вісімкове число, тобто скористаєтеся 0700, а не 700.

Прочитати команди налаштовування з файла, по одній (разом із аргументами) на рядок.

Кожен рядок містить команду налаштовування та її аргументи, наприклад:

 delete /якийсь/файл
 install якийсь_пакунок
 password якийсь-користувач:password:його-новий-пароль
    

Порожні рядки ігноруються, а рядки, що починаються з "#", є коментарями і також ігноруються. Крім того, аргументи можна розділити на декілька рядків додаванням "\" (символу продовження) наприкінці рядка. Приклад:

 edit /якийсь/файл:\
   s/^OPT=.*/OPT=ok/
    

Команди обробляються у тому самому порядку, у якому їх вказано у файлі, так, наче їх вказано як --delete /якийсь/файл у рядку команди.

Копіювати файли або каталоги рекурсивно у межах гостьової системи.

Не можна використовувати символи-замінники.

Скопіювати локальні файли або каталоги рекурсивно до образу диска, розташувавши його у каталозі "ВІДДАЛЕНИЙ_КАТАЛОГ" (який має існувати).

Не можна використовувати символи-замінники.

Вилучити файл з гостьової системи. Або вилучити каталог (і увесь його вміст, рекурсивно).

Ви можете скористатися символами-замінниками у вказаному шляху. Не забудьте екранувати символи-замінники у командній оболонці основної системи, якщо це потрібно. Приклад:

 virt-customize --delete '/var/log/*.log'.
    

Див. також --upload, --scrub.

Редагувати "ФАЙЛ" з використанням виразу Perl "ВИРАЗ".

Слід подбати про належне розставлення лапок у виразі, щоб запобігти його зміні у командній оболонці.

Зауважте, що цим параметром можна буде скористатися, лише якщо встановлено Perl 5.

Див. "NON-INTERACTIVE EDITING" in virt-edit(1).

Встановити "СКРИПТ" у гостьовій системі і запустити його під час першого завантаження гостьової системи (від імені root, у останній частині процесу завантаження).

До скрипту, після встановлення до гостьової системи, буде автоматично застосовано команду chmod +x.

Альтернативна версія --firstboot-command є такою самою, але зручно включає команду у однорядковому скрипті.

Можна вказати декілька параметрів --firstboot. Їх буде виконано у тому самому порядку, у якому їх вказано у рядку команди.

Будь ласка, зверніться до розділу "СКРИПТИ ПЕРШОГО ЗАВАНТАЖЕННЯ" in virt-builder(1), щоб ознайомитися із відомостями щодо скриптів першого завантаження і проблемами у їх використанні.

Див. також --run.

Виконати команду (разом із аргументами) у гостьовій системі під час першого завантаження гостьової системи (від імені root, у останній частині процесу завантаження).

Можна вказати декілька параметрів --firstboot. Їх буде виконано у тому самому порядку, у якому їх вказано у рядку команди.

Будь ласка, зверніться до розділу "СКРИПТИ ПЕРШОГО ЗАВАНТАЖЕННЯ" in virt-builder(1), щоб ознайомитися із відомостями щодо скриптів першого завантаження і проблемами у їх використанні.

Див. також --run.

Встановити іменовані пакунки (список значень, відокремлених комами). Ці пакунки буде встановлено під час першого завантаження гостьової системи за допомогою програми для керування пакунків гостьової системи (наприклад, apt, yum тощо) і з'єднання із мережею гостьової системи.

Огляд різних способів встановлення пакунків наведено у розділі "ВСТАНОВЛЕННЯ ПАКУНКІВ" in virt-builder(1).

Встановити як назву вузла гостьової системи значення "НАЗВА_ВУЗЛА". Якщо потрібно, можете скористатися форматом із крапкою, «назва_вузла.назва_домену» (FQDN).
Встановити іменовані пакунки (список значень, відокремлених комами). Ці пакунки буде встановлено під час збирання образу за допомогою програми для керування пакунків гостьової системи (наприклад, apt, yum тощо) і з'єднання із мережею основної системи.

Огляд різних способів встановлення пакунків наведено у розділі "ВСТАНОВЛЕННЯ ПАКУНКІВ" in virt-builder(1).

Див. також --update, --uninstall.

Створити символічне посилання або декілька посилань у гостьовій системі так, щоб вони з "ПОСИЛАННЯ" вказували на "ПРИЗНАЧЕННЯ".
Створити каталог у гостьовій системі.

Використовується "mkdir -p", отже буде створено усі проміжні каталоги. Також команда працює, якщо каталог вже існує.

Пересунути файли або каталоги у межах гостьової системи.

Не можна використовувати символи-замінники.

Витерти "builder.log" (файл журналу із командами збирання) з образу після завершення збирання. Якщо ви не хочете явним чином показувати, як було зібрано образ, скористайтеся цим параметром.

Див. також "LOG FILE".

Встановити пароль для користувача "КОРИСТУВАЧ". (Зауважте, що за допомогою цього параметра не можна створювати облікові записи користувачів.)

Формат поля "ВАРІАНТ" та способи налаштовування облікових записів користувачів описано у розділі "КОРИСТУВАЧІ І ПАРОЛІ" in virt-builder(1).

Якщо змінюється чи встановлюється пароль для гостьової системи, за допомогою цього параметра можна встановити шифрування для цього пароля у значення "md5", "sha256" або "sha512".

Для використання значень "sha256" та "sha512" має бути встановлено glibc ≥ 2.7 (перевірте у crypt(3) всередині гостьової системи).

"md5" працюватиме з відносно давніми гостьовими системами Linux (наприкладRHEL 3), але є незахищеним щодо новітніх способів атак.

Типовим способом шифрування є "sha512". Він використовується, якщо libguestfs вдасться виявити у гостьовій системі підтримку SHA-512. Якщо такої підтримки не буде виявлено, використовуватиметься "md5". За допомогою цього параметра ви можете перевизначити автоматично визначений libguestfs спосіб шифрування.

Зауважте, що це не змінить типового шифрування, яке використовується гостьовою системою, коли ви створюєте у ній нові облікові записи користувачів. Якщо ви хочете змінити це шифрування, вам слід скористатися параметром --edit для внесення змін до "/etc/sysconfig/authconfig" (Fedora, RHEL) або "/etc/pam.d/common-password" (Debian, Ubuntu).

Встановити пароль користувача root.

Формат поля "ВАРІАНТ" та способи налаштовування облікових записів користувачів описано у розділі "КОРИСТУВАЧІ І ПАРОЛІ" in virt-builder(1).

Зауваження: якщо у virt-builder ви не встановите --root-password, для гостьової системи буде використано випадковий пароль root.

Виконати скрипт оболонки (або будь-яку програму), яка називається "СКРИПТ" у образі диска. Скрипт буде запущено у віртуалізованому режимі у малій допоміжній системі, у пісочниці гостьової файлової системи.

Для скрипту буде автоматично використано команду chmod +x.

Якщо у libguestfs передбачено підтримку цього, буде доступним обмежене мережеве з'єднання, але лише для вихідних з'єднань. Ви також можете долучати диски з даними (наприклад, файли ISO), як ще один спосіб надання даних (наприклад, пакунків із програмним забезпеченням) для скрипту без потреби у з'єднанні із мережею (--attach). Також ви можете вивантажувати файли з даними (--upload).

Можна вказати декілька параметрів --run. Їх буде виконано у тому самому порядку, у якому їх вказано у рядку команди.

Див. також --firstboot, --attach, --upload.

Виконати команду із аргументами у образі диска. Команду буде виконано у віртуалізованому режимі у малій допоміжній системі, у пісочниці гостьової файлової системи.

Якщо у libguestfs передбачено підтримку цього, буде доступним обмежене мережеве з'єднання, але лише для вихідних з'єднань. Ви також можете долучати диски з даними (наприклад, файли ISO), як ще один спосіб надання даних (наприклад, пакунків із програмним забезпеченням) для скрипту без потреби у з'єднанні із мережею (--attach). Також ви можете вивантажувати файли з даними (--upload).

Можна вказати декілька параметрів --run-command. Їх буде виконано у тому самому порядку, у якому їх вказано у рядку команди.

Див. також --firstboot, --attach, --upload.

Витерти файл з гостьової системи. Подібне до --delete, окрім того, що:
  • Витирає дані так, що їх не можна буде відновити з гостьової системи.
  • Не може вилучати каталоги, лише звичайні файли.
Повторно встановити мітки для файлів у гостьовій системі так, щоб вони були правильними з точки зору SELinux.

Якщо буде використано цей параметр, програма спробує змінити мітки файлів негайно, але якщо цього зробити не вдасться, вона змінить часову мітку файла /.autorelabel на образі, щоб дію зі зміни міток було заплановано на наступне завантаження образу.

Вам слід використовувати цей параметр лише для гостьових систем із підтримкою SELinux.

Долучити систему до буфера передплати за допомогою "subscription-manager".

Формат поля "ВАРІАНТ" описано у розділі "SUBSCRIPTION-MANAGER" in virt-builder(1).

Встановити реєстраційні дані для "subscription-manager".

Формат поля "ВАРІАНТ" описано у розділі "SUBSCRIPTION-MANAGER" in virt-builder(1).

Зареєструвати гостьову систему за допомогою "subscription-manager".

Потребує встановлення реєстраційних даних за допомогою --sm-credentials.

Вилучити усі передплати з гостьової системи за допомогою "subscription-manager".
Зняти гостьову систему з реєстрації за допомогою "subscription-manager".
Вставити ключ ssh так, щоб вказаний "КОРИСТУВАЧ" зміг увійти до системи з використанням ssh без потреби у визначенні пароля. Запис користувача "КОРИСТУВАЧ" має вже існувати у гостьовій системі.

Формат поля "ВАРІАНТ" описано у розділі "КЛЮЧІ SSH" in virt-builder(1).

Ви можете додати декілька параметрів --ssh-inject для різних користувачів, а також для додавання декількох ключів для кожного з користувачів.

Встановити типовий часовий пояс гостьової системи у значення "ЧАСОВИЙ_ПОЯС". Скористайтеся рядком місця у форматі "Europe/London"
Ця команда виконує подібну до touch(1) дію над файлом "ФАЙЛ".
Ця команда обрізає файл "ФАЙЛ" до нульової довжини. Для її успішного виконання файл має існувати.
Ця команда рекурсивно обрізає усі файли у каталозі "ШЛЯХ" до нульової довжини.
Вилучити іменовані пакунки (список значень, відокремлених комами). Ці пакунки буде вилучено під час збирання образу за допомогою програми для керування пакунків гостьової системи (наприклад, apt, yum тощо). З метою виконання запиту також може бути вилучено пакунки, залежні від вилучених пакунків.

Див. також --install, --update.

Виконує еквівалент "yum update", "apt-get upgrade" або якоїсь іншої команди, яка потрібна для оновлення пакунків, які вже встановлено у шаблоні, до найсвіжіших версій.

Див. також --install, --uninstall.

Вивантажити локальний файл "ФАЙЛ" до призначення "ПРИЗНАЧЕННЯ" на образі диска. Буде збережено власника і права доступу, отже вам слід вказати такі значення для цих параметрів, які мають бути на остаточному образі диска.

Значенням параметра "ПРИЗНАЧЕННЯ" може бути назва остаточного файла. Цим можна скористатися для перейменовування файла під час вивантаження.

Якщо значенням параметра "ПРИЗНАЧЕННЯ" є назва каталогу (який вже має існувати у гостьовій системі), файл буде вивантажено до вказаного каталогу, назву файла з локальної файлової системи буде збережено.

Див. також --mkdir, --delete, --scrub.

Записати "ДАНІ" до файла "ФАЙЛ".

SELINUX

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

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

СТАН ВИХОДУ

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

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

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

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

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

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

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

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

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

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

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

АВТОРИ

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

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

Copyright (C) 2011-2020 Red Hat Inc.

LICENSE

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.

BUGS

To get a list of bugs against libguestfs, use this link: https://bugzilla.redhat.com/buglist.cgi?component=libguestfs&product=Virtualization+Tools

To report a new bug against libguestfs, use this link: https://bugzilla.redhat.com/enter_bug.cgi?component=libguestfs&product=Virtualization+Tools

When reporting a bug, please supply:

  • The version of libguestfs.
  • Where you got libguestfs (eg. which Linux distro, compiled from source, etc)
  • Describe the bug accurately and give a way to reproduce it.
  • Run libguestfs-test-tool(1) and paste the complete, unedited output into the bug report.
2021-03-31 libguestfs-1.44.2