Как развертывать готовые к облаку образы на голых серверах

Прямо сейчас OVHcloud участвует как в Cloud (на основе OpenStack), так и в BareMetal. Вот почему мы стараемся придерживаться того же подхода при развертывании операционных систем. В этой статье мы объясним, как это сделать, на примере недавно доступного дистрибутива: RedHat © Entreprise Linux.



Что такое облачный образ?

Для тех, кто не знает, готовые к облаку образы — это предустановленный дистрибутив, который поставляется в формате одного файла (RAW, QCOW2, OVF,…) и может быть загружен гипервизором, чтобы система была готова в секунд, без необходимости терпеть весь процесс установки.
Поскольку у вас может быть много разных виртуальных машин на основе этих образов, это своего рода ситуация, подходящая для всех, что делает их довольно интересными для работы.
Вы можете спросить: «Как я могу настроить такие параметры, как имя хоста, сеть, ключ ssh, на этом сервере перед загрузкой?» Здесь на помощь приходят метаданные cloud-init и instance .

Что такое метаданные cloud-init и instance ?

Cloud-init  — это решение, разработанное Canonical как «отраслевой стандартный метод множественного распространения для межплатформенной инициализации экземпляра облака» , и, насколько мы его использовали, оно работает довольно хорошо.
Cloud-init  — это служба, которая запускается при первой загрузке для изменения размера ваших разделов, настройки имени хоста, сети, передачи и выполнения сценариев, сообщения другим службам о том, что он активен, и других возможностей.
Вся эта информация хранится в метаданных экземпляра, которые могут иметь разные формы. В основном, возможно, в виде метаданных , предоставляемых облаком , в форме коллекции файлов JSON. Ниже приведен пример файла meta_data.json .

{
«ключи»: [
{
«данные»: «ssh-rsa AAAAB3NzaC1yc2AACABQCnZ0Ma2nE99GXH == jcollin@ovhcloud.com»,
«тип»: «ssh»,
«имя»: «ключ1»
}
],
«public_keys»: {
«key1»: «ssh-rsa AAAAB3NzaC1yc2AACABQCnZ0Ma2nE99GXH == jcollin@ovhcloud.com»
},
«uuid»: «12345678-1234-1234-1234-abcdefghijkl»,
«availability_zone»: «nova»,
«hostname»: «myhostname»,
«устройства»: [],
«launch_index»: 0,
«project_id»: «abcdefgh-4321-4321-1234-lkjihgfedcba»,
«name»: «myhostname»
}

Как это работает на BareMetal?

Он почти такой же, как и в облаке, только требует дополнительной работы. Работая с OpenStack, мы хотим применить облачный процесс к голым серверам. Он во многом вдохновлен Ironic, модулем OpenStack Baremetal.

Изображение

В этом примере мы будем использовать случай с недавно доступным RedHat © Entreprise Linux, и, поскольку мы можем предоставить два способа разместить его на вашем сервере, процесс примерно такой же.



Мы используем официальный готовый к облаку образ RHEL, предоставленный RedHat ©, используем его в нашей собственной фабрике шаблонов, созданной с помощью Packer и OVHcloud Public Cloud, для загрузки и предварительной установки пакетов, которые будут использоваться позже в процессе установки, например mdadm, lvm2 и другие.

Затем образ помещается в нашу зеркальную инфраструктуру, которая передаст этот образ службе, которая выполнит установку.

Процесс

Чтобы установить такой образ на ваш сервер без операционной системы , мы загружаем его в образе восстановления и выполняем с ним множество операций, таких как:

  1. протирание дисков
  2. настройка разделов и RAID (если есть)
  3. создание раздела config-drive (об этом поговорим позже)
  4. монтирование всех установочных разделов во временную папку
  5. rsyncing изображения во временной папке
  6. сделать его загрузочным (позже в этой части)
  • если у дистрибутива должна быть лицензия, требуется один дополнительный шаг, например:
  1. регистрация в RedHat © Subscription Manager '
  2. перезагрузка
  3. жду телефон

config-drive

Это источник метаданных нашего экземпляра на голых серверах. Он содержит все необходимые файлы для cloud_init, чтобы установить и настроить систему при первой загрузке.
Это небольшой (1 МБ) раздел с файловой системой ISO-9660 (да, это означает, что он доступен только для чтения), который будет обнаружен облачной службой инициализации вместо стандартных meta_data .

Делаем образ загрузочным

За этим варварским названием скрывается отточенный процесс, который требует множества настроек. К счастью для вас (и нас), все это автоматизировано, даже если сначала настройка выполняется вручную.

  • создание 
    /etc/fstab
  • конфигурация grub с некоторыми конкретными предустановками
  • установка инструментов типа lvm2 , mdadm
  • создание 
    /boot/initramfs
    с дополнительными драйверами
  • установка grub
  • синхронизация 
    /boot/efi
    раздела

Все это гарантирует, что ваш сервер сможет корректно загрузиться.

домашний телефон

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

Это простой скрипт, который выполнит HTTP POST для самодельной службы. Это позволяет нам узнать, что сервер наконец загружен, и что сразу после первых шагов cloud-init исходный будет ждать окончания процесса и делать вызов только тогда, когда вы можете войти на свой сервер.

Что делает все это сложным?

Что ж, это хороший вопрос! Мы стараемся сделать этот процесс как можно проще, и это сложная задача, потому что все дистрибутивы разные, даже один и тот же дистрибутив в другой версии может отличаться.
Например, мы предоставляем 4 вида RedHat © Entreprise Linux.



Настройка для RHEL 7 немного отличается от настройки для RHEL 8, но у вас есть те же сценарии, которые нужно применить (или не применять), когда дело доходит до лицензирования. Поскольку у нас нет возможности лицензировать RHEL, стандартным методом покупки лицензии у OVH является способ BYOL, который означает: « Принесите свою собственную лицензию» .

RedHat © это сложно?

На самом деле нет. Но у RedHat © есть стандарты, и мы должны их уважать, поэтому возникают проблемы.

Перед тем как быть в состоянии продать RedHat © Entreprise Linux на Baremetal, мы должны были удостоверить каждый наш аромат с аппаратными тестами, такие как сети, вычислительные, доступ к дискам, память, виртуализации возможностей, и многой другим. Процесс долгий, но вы должны знать, что делаете, еще лучше, потому что даже если каждый дистрибутив отличается, каждый сервер тоже.

Итак, да, мы с гордостью можем сказать, что достигли этого подвига, как и другие крупные производители.


Будущее

Как я уже говорил вам, этот процесс довольно близок к OpenStack Ironic, и, если это может быть будущее с точки зрения предоставления Baremetal как услуги, может потребоваться небольшая работа над вашим облачным образом.
И если вы готовы к этой задаче, возможно, создайте свой собственный образ, чтобы установить его на свои новые серверы, с помощью функции « Принесите свое собственное изображение», которая сейчас находится в разработке!

0 комментариев

Оставить комментарий