Как подготовить Linux-ВМ к превращению в образ
Когда использовать
Перед тем как превратить Linux-ВМ в образ. Каждая машина из образа должна получить свои имя хоста, пользователей с паролями и ключами SSH, сеть и DNS.
Первичную настройку Linux-машины в vStack Center выполняет cloud-init. При каждом запуске ВМ кластер отдаёт ей параметры через второй последовательный порт (COM2) в формате источника данных SmartOS. Каждая ВМ получает собственный идентификатор экземпляра, поэтому cloud-init на копии считает загрузку первой и заново задаёт имя хоста, пользователей и пароли.
Отсюда главное отличие от Windows: обобщать систему отдельной утилитой не нужно. Достаточно не сломать cloud-init и убрать из гостя то, что не должно попасть в копии.
Предусловия
- ВМ создана из Linux-образа каталога с cloud-init — тип гостевой настройки образа «Cloud-init: SmartOS». Образ, превращённый из ВМ, наследует от её профиля тип гостевой настройки, тип ОС, оболочку пользователей по умолчанию и шаблон имён сетевых интерфейсов.
- Внутри гостя установлено и настроено всё, что должно попасть в образ.
- Есть доступ к ВМ с правами root — через консоль или SSH.
- ВМ удовлетворяет требованиям превращения: только загрузочный диск, нет клонов, сама не тонкий клон, — см. предусловия.
Шаги
-
Проверьте, что cloud-init работает. Не удаляйте и не отключайте его и не меняйте настройки источника данных. Состояние последней загрузки:
cloud-init status --longОжидаемое —
status: doneбез ошибок. -
Уберите из гостя секреты. Удалите сохранённые пароли, токены, личные ключи SSH пользователей, историю командной оболочки и рабочие файлы, которые не должны попасть в копии. Всё, что останется на диске, получит каждая машина из образа, а у образа, общего для кластера, — каждый ВЦОД.
-
Очистите следы этой машины — по общей практике подготовки образов Linux:
cloud-init clean --logstruncate -s 0 /etc/machine-idПервая команда стирает состояние и журналы cloud-init этой машины. Вторая очищает идентификатор машины systemd: при следующей загрузке копия создаст свой. Ключи хоста SSH cloud-init на новом экземпляре по умолчанию создаёт заново.
Если сетевые настройки в госте привязаны к MAC-адресу (правила udev, конфигурации netplan или NetworkManager с MAC), уберите эту привязку: у новой ВМ будет другой MAC-адрес.
-
Остановите ВМ из vStack Center: на карточке ВМ «Actions» → «Stop». Дождитесь статуса «Offline».
-
Превратите ВМ в образ — по инструкции «Как превратить ВМ в образ».
Проверка результата
Создайте из образа новую ВМ с новыми именем хоста и паролем root и войдите в неё через консоль.
| Что смотреть | Ожидаемое |
|---|---|
| Вход | пароль, заданный при создании ВМ, подходит |
hostname | имя хоста, заданное при создании ВМ |
cloud-init status | status: done |
| Сеть | адрес и шлюз из сети ВМ, DNS отвечает |
Если не получилось
| Что видно | Причина | Что сделать |
|---|---|---|
| имя хоста и пароль остались от исходной машины | cloud-init в госте отключён, удалён или настроен на другой источник данных | образ непригоден: подготовьте новую исходную ВМ, не трогая cloud-init |
| копия не получила адрес | сетевые настройки в госте привязаны к MAC-адресу исходной ВМ | подготовьте новую исходную ВМ, убрав привязку к MAC (шаг 3) |
cloud-init status показывает ошибку | сбой одного из модулей cloud-init | причина — в /var/log/cloud-init.log |
См. также
- Как превратить ВМ в образ.
- Как подготовить Windows-ВМ к превращению в образ.
- Как создать, удалить и перенести виртуальную машину — гостевые настройки при создании ВМ.
- Библиотека образов ОС.
Методы API
Операции этой страницы в API: vms-stop, os-image-from-vm, vms-create —
см. Справочник API.