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

Подготовить ISO-образ для работы с облачной платформой

Последнее изменение:

Если вы загрузили в хранилище образов ISO-образ с дистрибутивом операционной системы, мы рекомендуем сделать его полностью совместимым с облачной платформой Selectel. Из совместимого образа можно создавать облачные серверы, для которых будет доступна такая же функциональность, как у серверов из готовых образов.

Подготовить образ Windows

  1. Подготовьте ISO-образ локально.
  2. Загрузите ISO-образ в хранилище образов.
  3. Модифицируйте свойства образа Windows.

1. Подготовить ISO-образ локально

  1. На локальном компьютере распакуйте архив с ISO-образом в отдельную директорию архиватором, например, 7-zip, WinRAR, tar.

  2. Скачайте VirtiO-драйверы в виде ISO-образа из репозитория Fedora People

  3. Создайте директорию Drivers.

  4. Распакуйте в директорию Drivers ISO-образ с VirtiO-драйверами архиватором, например, 7-zip, WinRAR, UltraISO.

  5. Перенесите директорию Drivers с VirtiO-драйверами в директорию ISO-образа Windows, который вы распаковали на шаге 1.

  6. Установите утилиту DISM++ для управления образами.

  7. Откройте DISM++.

  8. Соберите установочный образ, для этого перейдите в раздел Toolkit и выберите ISO Maker.

2. Загрузить ISO-образ в хранилище образов

Используйте подраздел Загрузить и создать образ из файла инструкции Загрузить и создать образ.

Укажите:

  • файл — образ, который подготовили ранее;
  • ОС — Windows;
  • формат образа — iso;
  • формат контейнера — bare.

3. Модифицировать свойства образа

  1. Откройте OpenStack CLI.

  2. Выведите ID доступных образов:

    openstack image list

    В ответе появится список образов. Скопируйте ID образа, который вы загрузили ранее.

  3. Опционально: посмотрите свойства образа:

    openstack image show
  4. Добавьте нужные свойства:

    openstack image set \
    --property hw_disk_bus=scsi
    --property hw_firmware_type=uefi
    --property hw_qemu_guest_agent=yes
    --property hw_scsi_model=virtio-scsi
    --property os_type=windows
    --property x_sel_image_agent_type=cloudbase-init
    --property x_sel_image_os_arch=amd64
    --property x_sel_image_os_dist=windows
    --property x_sel_image_os_type=windows
    --property x_sel_image_type=master
    --property x_sel_kpti_patch=true \
    <image_id>

    Укажите <image_id> — ID образа, который вы скопировали на шаге 2.

Подготовить образ Linux

к сведению

Это инструкция для образа Oracle Linux. Для других дистрибутивов могут отличаться утилиты, репозитории и расположение файлов.

  1. Загрузите ISO-образ в хранилище образов.
  2. Создайте облачный сервер из загруженного образа.
  3. Настройте облачный сервер.
  4. Создайте образ из загрузочного диска облачного сервера.

1. Загрузить ISO-образ в хранилище образов

Используйте инструкцию Загрузить и создать образ.

2. Создать облачный сервер из загруженного образа

Используйте инструкцию Создать облачный сервер.

Выберите в качестве источника загруженный образ, а в качестве загрузочного диска — сетевой диск.

3. Настроить облачный сервер

  1. Подключитесь к облачному серверу.

  2. Добавьте в файл selectel-openstack.repo репозитории OpenStack Selectel:

    cat <<EOF > /etc/dnf.repos.d/selectel-openstack.repo
    [selectel-openstack]
    name=selectel-openstack
    baseurl=http://mirror.selectel.org/rpm/centos/7/x86_64
    gpgcheck=1
    gpgkey=http://mirror.selectel.org/selectel-openstack.key
    EOF
  3. Обновите список репозиториев для пакетного менеджера:

    dnf update
  4. Установите пакеты:

    dnf install crontab-randomizer \
    fstrim-blocks qemu-guest-agent \
    set-root-pw \
    cloud-init \
    cloud-utils-growpart \
    compat-openssl10
  5. Перейдите в директорию /etc/cloud/cloud.cfg.d/ для создания конфигурационных файлов cloud-init:

    cd /etc/cloud/cloud.cfg.d/
  6. Запретите создание пользователя ubuntu:

    cat <<EOF > 10_no_default_users.cfg
    users: []
    EOF
  7. Добавьте источники данных для cloud-init-datasources:

    cat <<EOF > 91-dib-cloud-init-datasources.cfg
    datasource_list: [ ConfigDrive, Ec2, None ]
    EOF
  8. Отключите предупреждение об использовании cloud-init и EC2:

    cat <<EOF > 92-ec2-datasource.cfg
    #cloud-config
    datasource:
    Ec2:
    strict_id: false
    EOF
  9. Добавьте настройки загрузки:

    cat <<EOF > 99_boot_routines.cfg
    bootcmd:
    - sed -i '/^;/d' /etc/resolv.conf
    EOF
  10. Запретите для cloud-init отключать EC2-метаданные:

    cat <<EOF > 99_enable_ec2.cfg
    disable_ec2_metadata: false
    EOF
  11. Добавьте настройки первой загрузки:

    cat <<EOF > 99_first_boot_routines.cfg
    runcmd:
    - sed -i '/NetworkManager/d' /etc/resolv.conf
    - sed -i '/^search/d' /etc/resolv.conf
    - set-root-pw 2> /dev/null
    - crontab-randomizer
    EOF
  12. Запретите отключение root-доступа через SSH:

    cat <<EOF > 99_keep_root_user.cfg
    disable_root: false
    EOF
  13. Измените таймзону:

    cat <<EOF > 99_location.cfg
    locale: en_US.UTF-8
    timezone: UTC
    EOF
  14. Добавьте разрешение аутентификации по паролю через SSH:

    cat <<EOF > 99_ssh_settings.cfg
    ssh_pwauth: true
    no_ssh_fingerprints: true
    ssh_deletekeys: true
    EOF
  15. Настройте автозапуск сервисов для применения изменений и корректной работы после перезагрузки сервера:

    systemctl enable cloud-init
    systemctl enable cloud-init.service
    systemctl enable cloud-config.service
    systemctl enable cloud-final.service
    systemctl enable qemu-guest-agent.service
    systemctl enable cockpit.socket
  16. Выполните аппаратную перезагрузку сервера.

  17. Повторно подключитесь к облачному серверу.

    Появится сообщение о том, что изменился идентификатор хоста. Это означает, что cloud-init успешно работает при загрузке операционной системы:

    @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
    @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
    Someone could be eavesdropping on you right now (man-in-the-middle attack)!
    It is also possible that a host key has just been changed.

4. Создайте образ из загрузочного диска облачного сервера

  1. Создайте образ из загрузочного диска облачного сервера.

  2. Откройте OpenStack CLI.

  3. Добавьте свойства для созданного образа:

    openstack image set --property x_sel_image_owner=Selectel <image>
    openstack image set --property hw_qemu_guest_agent=yes <image>

    Укажите <image> — ID или имя образа. Список можно посмотреть с помощью openstack image list --private

  4. Опционально: после создания образа из диска удалите облачный сервер.