Подготовить ISO-образ для работы с облачной платформой
Если вы загрузили в хранилище образов ISO-образ с дистрибутивом операционной системы, мы рекомендуем сделать его полностью совместимым с облачной платформой Selectel. Из совместимого образа можно создавать облачные серверы, для которых будет доступна такая же функциональность, как у серверов из готовых образов.
Подготовить образ Windows
- Подготовьте ISO-образ локально.
- Загрузите ISO-образ в хранилище образов.
- Модифицируйте свойства образа Windows.
1. Подготовить ISO-образ локально
-
На локальном компьютере распакуйте архив с ISO-образом в отдельную директорию архиватором, например,
7-zip
,WinRAR
,tar
. -
Скачайте VirtiO-драйверы в виде ISO-образа из репозитория Fedora People
-
Создайте директорию Drivers.
-
Распакуйте в директорию Drivers ISO-образ с VirtiO-драйверами архиватором, например,
7-zip
,WinRAR
,UltraISO
. -
Перенесите директорию Drivers с VirtiO-драйверами в директорию ISO-образа Windows, который вы распаковали на шаге 1.
-
Установите утилиту DISM++ для управления образами.
-
Откройте DISM++.
-
Соберите установочный образ, для этого перейдите в раздел Toolkit и выберите ISO Maker.
2. Загрузить ISO-образ в хранилище образов
Используйте подраздел Загрузить и создать образ из файла инструкции Загрузить и создать образ.
Укажите:
- файл — образ, который подготовили ранее;
- ОС — Windows;
- формат образа —
iso
; - формат контейнера —
bare
.
3. Модифицировать свойства образа
-
Выведите ID доступных образов:
openstack image list
В ответе появится список образов. Скопируйте ID образа, который вы загрузили ранее.
-
Опционально: посмотрите свойства образа:
openstack image show
-
Добавьте нужные свойства:
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. Для других дистрибутивов могут отличаться утилиты, репозитории и расположение файлов.
- Загрузите ISO-образ в хранилище образов.
- Создайте облачный сервер из загруженного образа.
- Настройте облачный сервер.
- Создайте образ из загрузочного диска облачного сервера.
1. Загрузить ISO-образ в хранилище образов
Используйте инструкцию Загрузить и создать образ.
2. Создать облачный сервер из загруженного образа
Используйте инстру кцию Создать облачный сервер.
Выберите в качестве источника загруженный образ, а в качестве загрузочного диска — сетевой диск.
3. Настроить облачный сервер
-
Добавьте в файл
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 -
Обновите список репозиториев для пакетного менеджера:
dnf update
-
Установите пакеты:
dnf install crontab-randomizer \
fstrim-blocks qemu-guest-agent \
set-root-pw \
cloud-init \
cloud-utils-growpart \
compat-openssl10 -
Перейдите в директорию
/etc/cloud/cloud.cfg.d/
для создания конфигурационных файлов cloud-init:cd /etc/cloud/cloud.cfg.d/
-
Запретите создание пользователя
ubuntu
:cat <<EOF > 10_no_default_users.cfg
users: []
EOF -
Добавьте источники данных для cloud-init-datasources:
cat <<EOF > 91-dib-cloud-init-datasources.cfg
datasource_list: [ ConfigDrive, Ec2, None ]
EOF -
Отключите предупреждение об использовании cloud-init и EC2:
cat <<EOF > 92-ec2-datasource.cfg
#cloud-config
datasource:
Ec2:
strict_id: false
EOF -
Добавьте настройки загрузки:
cat <<EOF > 99_boot_routines.cfg
bootcmd:
- sed -i '/^;/d' /etc/resolv.conf
EOF -
Запретите для cloud-init отключать EC2-метаданные:
cat <<EOF > 99_enable_ec2.cfg
disable_ec2_metadata: false
EOF -
Добавьте настройки первой загрузки:
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 -
Запретите отключение root-доступа через SSH:
cat <<EOF > 99_keep_root_user.cfg
disable_root: false
EOF -
Измените таймзону:
cat <<EOF > 99_location.cfg
locale: en_US.UTF-8
timezone: UTC
EOF -
Добавьте разрешение аутентификации по паролю через SSH:
cat <<EOF > 99_ssh_settings.cfg
ssh_pwauth: true
no_ssh_fingerprints: true
ssh_deletekeys: true
EOF -
Настройте автозапуск сервисов для применения изменений и корректной работы после перезагрузки сервера:
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 -
Повторно подключитесь к облачному серверу.
Появится сообщение о том, что изменился идентификатор хоста. Это означает, что 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. Создайте образ из загрузочного диска облачного сервера
-
Добавьте свойства для созданного образа:
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
-
Опционально: после создания образа из диска удалите облачный сервер.