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

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

Инструкция подготовлена на примере Oracle Linux. Для других дистрибутивов могут отличаться утилиты, репозитории и расположение файлов.
  1. Загрузите образ в хранилище образов.
  2. Создайте облачный сервер с загрузочным сетевым диском. Выберите в качестве источника ваш образ.
  3. Подключитесь к серверу по SSH.
  4. Добавьте в файл selectel-openstack.repo репозитории OpenStack Selectel:
cat <<EOF > /etc/yum.repos.d/selectel-openstack.repo
[selectel-openstack]
name=selectel-openstack
baseurl=http://repo.os.selectel.org/rpm/centos/7/x86_64
gpgcheck=1
gpgkey=http://repo.os.selectel.org/selectel-openstack.key
EOF
  1. Обновите список репозиториев для пакетного менеджера:
yum update
  1. Установите пакеты:
yum install crontab-randomizer \
  fstrim-blocks qemu-guest-agent \
  set-root-pw \
  cloud-init \
  cloud-utils-growpart \
  compat-openssl10
  1. Перейдите в директорию и создайте в ней конфигурационные файлы для 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 '/^nameserver 10\./d' /etc/resolv.conf
  - sed -i '/^nameserver 192\./d' /etc/resolv.conf
  - sed -i '/^nameserver 172\./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
  1. Настройте автозапуск сервисов для применения изменений и корректной работы после перезагрузки сервера:
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
  1. Выполните аппаратную перезагрузку сервера — по питанию.
  2. При подключении по SSH появится сообщение о том, что изменился идентификатор хоста. Это означает, что 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.
  1. Создайте новый образ сетевого диска. При создании выберите для образа операционную систему Linux.
  2. Опционально: после создания нового образа удалите облачный сервер.
  3. Начните работу с OpenStack CLI.
  4. Для полной совместимости с панелью управления измените параметры созданного образа:
glance image-update  --property x_sel_image_owner=Selectel
  1. Опционально: создайте облачный сервер из совместимого образа. Если вы создаете облачный сервер с диском большего размера, увеличьте размер файловой системы.