Перейти к основному содержимому

Как подготовить Windows-ВМ к превращению в образ

Когда использовать​

Перед тем как превратить Windows-ВМ в образ. Каждая машина, созданная из образа, должна получить собственную идентичность Windows (идентификатор безопасности SID, имя компьютера) и пройти первичную настройку: имя хоста, пароль администратора, сеть.

Первичную настройку Windows-машины в vStack Center выполняет Cloudbase-Init. При создании ВМ кластер готовит для неё диск с параметрами в формате OpenStack ConfigDrive, и Cloudbase-Init читает его при первой загрузке. Чтобы это сработало на копии, исходную машину обобщают утилитой sysprep: она стирает идентичность Windows, а при следующей загрузке Windows заново проходит настройку и запускает Cloudbase-Init.

Превращение в образ необратимо, а после sysprep исходную машину нельзя запускать. Поэтому порядок шагов ниже важен.

Предусловия​

  • ВМ создана из Windows-образа каталога с Cloudbase-Init — тип гостевой настройки образа «Cloud-base». Образ, превращённый из ВМ, наследует этот тип от её профиля.
  • Внутри гостя установлено и настроено всё, что должно попасть в образ.
  • Есть доступ к ВМ с правами администратора Windows — через консоль или RDP.
  • ВМ удовлетворяет требованиям превращения: только загрузочный диск, нет клонов, сама не тонкий клон, — см. предусловия.

Шаги​

  1. Уберите из гостя секреты. Удалите сохранённые пароли, ключи, токены, историю и файлы пользователей, которые не должны попасть в копии. Всё, что останется на диске, получит каждая машина из образа, а у образа, общего для кластера, — каждый ВЦОД.

  2. Сделайте снимок ВМ. Остановите машину, сделайте снимок и снова её запустите. Снимок — точка отката, если sysprep не удастся или ВМ случайно загрузится после него. Превращение в образ всё равно удалит все снимки ВМ. Снимок с работающей машины тоже подойдёт, но после отката к нему Windows покажет окно «Shutdown Event Tracker»: закройте его кнопкой «Cancel», прежде чем продолжать.

  3. Переведите службу Cloudbase-Init на ручной запуск. В Server Manager откройте меню «Tools» и выберите «Services».

    Server Manager, меню Tools: выделен пункт Services

    В списке служб найдите cloudbase-init и откройте её свойства двойным щелчком. В поле «Startup type» выберите «Manual» и нажмите «OK». В списке служб у неё появится «Manual».

    Свойства службы cloudbase-init: в поле Startup type выбрано Manual

    Зачем: если служба останется в автозапуске, на копии она стартует раньше, чем Windows закончит настройку, и перезагрузит машину. Копия уйдёт в ошибку «The computer restarted unexpectedly or encountered an unexpected error» и не загрузится.

  4. Проверьте, что на копии служба включится обратно. Это делает сценарий SetupComplete.cmd: Windows выполняет его в конце настройки копии. В Проводнике откройте папку C:\Windows\Setup\Scripts, щёлкните по файлу SetupComplete правой кнопкой и выберите «Edit». Файл откроется в Блокноте, в нём должна быть строка sc config cloudbase-init start= auto && net start cloudbase-init.

    SetupComplete.cmd в Блокноте со строкой, которая включает службу cloudbase-init

    Если файла нет, создайте его в Блокноте с этой строкой и сохраните как C:\Windows\Setup\Scripts\SetupComplete.cmd.

  5. Скопируйте файл ответов Cloudbase-Init в корень диска C. В Проводнике откройте папку C:\Program Files\Cloudbase Solutions\Cloudbase-Init\conf, выделите файл Unattend и нажмите «Copy» на ленте. Проводник скрывает расширение: это файл Unattend.xml.

    Папка conf Cloudbase-Init: выделен файл Unattend

    Откройте C:\ и нажмите «Paste». В корне диска появится Unattend.

    Корень диска C со вставленным файлом Unattend

  6. Запустите sysprep. Нажмите Win+R, вставьте в окно «Run» строку целиком и нажмите «OK»:

    C:\Windows\System32\Sysprep\sysprep.exe /generalize /oobe /quit /unattend:C:\Unattend.xml

    Окно Run со строкой запуска sysprep

    Окно самой утилиты sysprep не подходит: в нём нельзя указать файл ответов, а без него копии останавливаются на экранах мастера первого запуска.

    Ключ /quit тоже важен. С ключом /shutdown Windows выключится сама, но vStack Center считает такую ВМ запущенной и может включить её снова. Тогда Windows начнёт настройку прямо на исходной машине, и обобщение пропадёт.

    Появится окно «Sysprep is working…». Дождитесь, пока оно закроется, — обычно это несколько минут.

    Окно Sysprep is working: идёт фаза generalize

    Проверьте результат: в папке C:\Windows\System32\Sysprep должен появиться файл Sysprep_succeeded.tag с текущим временем.

    Папка Sysprep с файлом Sysprep_succeeded.tag

  7. Остановите ВМ из vStack Center: на карточке ВМ «Actions» → «Stop». Не выключайте и не перезагружайте машину изнутри гостя. Дождитесь статуса «Offline».

  8. Не запускайте ВМ до превращения в образ. Любая загрузка запустит настройку на исходной машине. Если это случилось, остановите ВМ, откатите её к снимку из шага 2, запустите и повторите шаги 3–7.

  9. Превратите ВМ в образ — по инструкции «Как превратить ВМ в образ».

Проверка результата​

Создайте из образа новую ВМ и откройте её консоль.

Что смотретьОжидаемое
Первая загрузкаWindows проходит настройку и перезагружается сама — обычно дважды
Итог загрузкиэкран входа в систему без ошибок и без мастера первого запуска

Если не получилось​

Что видноПричинаЧто сделать
копия циклически перезагружается с ошибкой «The computer restarted unexpectedly…»служба Cloudbase-Init была в автозапуске во время sysprepобраз непригоден: не создавайте из него ВМ и подготовьте новую исходную ВМ, проверив шаги 3 и 4. Удаление образа — см. «Образ нельзя удалить»
копия останавливается на экранах мастера первого запускаsysprep запущен без файла ответов Cloudbase-Initобраз непригоден: подготовьте новую исходную ВМ и запустите sysprep строкой из шага 6
исходная ВМ загрузилась после sysprepвыключение изнутри гостя или ручной запускостановить ВМ, откатить к снимку, запустить и повторить шаги 3–7
sysprep завершился ошибкойпричина записана в C:\Windows\System32\Sysprep\Panther\setuperr.logустранить причину, откатиться к снимку, запустить ВМ и повторить

См. также​

Методы API​

Операции этой страницы в API: vms-snapshot, vms-rollback, vms-stop, os-image-from-vm, vms-create — см. Справочник API.