Загрузка облачного сервера из ISO-диска

Загрузочные ISO-диски (из образов в формате .iso) содержат дистрибутив операционной системы и используются в качестве установщика ОС на облачном сервере (виртуальной машине). Также их можно использовать для восстановительных работ на сервере.

Создание сервера из ISO-диска

Чтобы создать сервер из ISO-диска, в панели управления:

  1. Загрузите ISO-образ в Хранилище образов по инструкции Создание образа.
  2. Создайте облачный сервер, выбрав в качестве источника загруженный образ. Вместе с сервером будет создан системный сетевой ISO-диск с названием вида virtual-cd-rom-for-Server.

Примечание: подключать ISO-диск к существующему облачному серверу не рекомендуется. Если вы хотите создать загрузочный диск для последующего использования, то создайте новый облачный сервер из ISO-образа, настройте сервер и установите нужное ПО. Затем создайте образ из локального или сетевого диска сервера — он будет в формате .raw. Подробнее об образах дисков.

Подготовка дистрибутивов Linux для совместимости с Облачной платформой

Все собственные загруженные ISO-образы с дистрибутивами операционных систем можно сделать полностью совместимыми с Облачной платформой Selectel — в таком случае будут доступны все функции в панели управления, OpenStack CLI и управление через Terraform.

Обратите внимание! Эта инструкция подготовлена на примере 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
  5. Обновите список репозиториев для пакетного менеджера:

    yum update
  6. Установите следующие пакеты:

    yum install crontab-randomizer fstrim-blocks qemu-guest-agent set-root-pw cloud-init cloud-utils-growpart compat-openssl10
  7. Перейдите в директорию и создайте следующие конфигурационные файлы для 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
  8. Настройте автозапуск сервисов для применения изменений и корректной работы после перезагрузки сервера:

    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
  9. Перезагрузите сервер по питанию.

  10. После этого при подключении по 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.
  11. Создайте новый образ из сетевого диска. При создании выберите для образа операционную систему Linux. Примечание: после того, как образ создан, вы можете удалить облачный сервер.

  12. Настройте OpenStack CLI.

  13. Для полной совместимости с панелью управления измените параметры получившегося образа:

    glance image-update  --property x_sel_image_owner=Selectel

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

Расширение файловой системы

Если из совместимого образа вы создаете облачный сервер с диском большего размера, то может потребоваться вручную увеличить размер файловой системы по инструкции Утилиты для расширения диска.

Восстановление работы сервера

Восстановление работы облачного сервера может потребоваться в нескольких случаях, например:

  • нужно восстановить особо важные файлы;
  • есть ошибки в конфигурации загрузочных скриптов или сети.

Обычно для восстановления работы сервера используется загрузка в rescue-режиме. Технически для этого используется специально подготовленный специалистами Selectel образ, который позволяет получить доступ ко всем настройкам виртуальной машины, исправить какую-либо ошибку конфигурирования, восстановить файловую систему или может быть использован для других нужд.

Иногда может быть полезно провести восстановление работы сервера, загрузившись со специального ISO-диска, а затем исправить сетевой диск сервера.

Исправление сетевого диска

В разделе Серверы в проекте выберите облачный сервер, работу которого нужно восстановить:

  1. Отключите сервер.
  2. Отключите сетевой диск от сервера.
  3. Создайте новый облачный сервер из загрузочного ISO-образа.
  4. Подключите к новому серверу сетевой диск, который нужно исправить.
  5. Проведите восстановительные работы с диском на новом облачном сервере. Теперь сетевой диск исправлен.
  6. Отключите новый сервер и отключите от него исправленный сетевой диск.
  7. Подключите сетевой диск обратно к предыдущему серверу или создайте новый сервер с исправленным сетевым диском.