Как развертывать готовые к облаку образы на голых серверах
Прямо сейчас OVHcloud участвует как в Cloud (на основе OpenStack), так и в BareMetal. Вот почему мы стараемся придерживаться того же подхода при развертывании операционных систем. В этой статье мы объясним, как это сделать, на примере недавно доступного дистрибутива: RedHat © Entreprise Linux.
Для тех, кто не знает, готовые к облаку образы — это предустановленный дистрибутив, который поставляется в формате одного файла (RAW, QCOW2, OVF,…) и может быть загружен гипервизором, чтобы система была готова в секунд, без необходимости терпеть весь процесс установки.
Поскольку у вас может быть много разных виртуальных машин на основе этих образов, это своего рода ситуация, подходящая для всех, что делает их довольно интересными для работы.
Вы можете спросить: «Как я могу настроить такие параметры, как имя хоста, сеть, ключ ssh, на этом сервере перед загрузкой?» Здесь на помощь приходят метаданные cloud-init и instance .
Cloud-init — это решение, разработанное Canonical как «отраслевой стандартный метод множественного распространения для межплатформенной инициализации экземпляра облака» , и, насколько мы его использовали, оно работает довольно хорошо.
Cloud-init — это служба, которая запускается при первой загрузке для изменения размера ваших разделов, настройки имени хоста, сети, передачи и выполнения сценариев, сообщения другим службам о том, что он активен, и других возможностей.
Вся эта информация хранится в метаданных экземпляра, которые могут иметь разные формы. В основном, возможно, в виде метаданных , предоставляемых облаком , в форме коллекции файлов JSON. Ниже приведен пример файла meta_data.json .
{
Он почти такой же, как и в облаке, только требует дополнительной работы. Работая с OpenStack, мы хотим применить облачный процесс к голым серверам. Он во многом вдохновлен Ironic, модулем OpenStack Baremetal.
В этом примере мы будем использовать случай с недавно доступным RedHat © Entreprise Linux, и, поскольку мы можем предоставить два способа разместить его на вашем сервере, процесс примерно такой же.
Мы используем официальный готовый к облаку образ RHEL, предоставленный RedHat ©, используем его в нашей собственной фабрике шаблонов, созданной с помощью Packer и OVHcloud Public Cloud, для загрузки и предварительной установки пакетов, которые будут использоваться позже в процессе установки, например mdadm, lvm2 и другие.
Затем образ помещается в нашу зеркальную инфраструктуру, которая передаст этот образ службе, которая выполнит установку.
Чтобы установить такой образ на ваш сервер без операционной системы , мы загружаем его в образе восстановления и выполняем с ним множество операций, таких как:
Это источник метаданных нашего экземпляра на голых серверах. Он содержит все необходимые файлы для cloud_init, чтобы установить и настроить систему при первой загрузке.
Это небольшой (1 МБ) раздел с файловой системой ISO-9660 (да, это означает, что он доступен только для чтения), который будет обнаружен облачной службой инициализации вместо стандартных meta_data .
За этим варварским названием скрывается отточенный процесс, который требует множества настроек. К счастью для вас (и нас), все это автоматизировано, даже если сначала настройка выполняется вручную.
Все это гарантирует, что ваш сервер сможет корректно загрузиться.
Phone-home — это функция облачной инициализации, которую мы передали на аутсорсинг, чтобы убедиться, что она будет работать, даже если вы решите создать сценарий первой загрузки , который удалит все следы облачной инициализации .
Это простой скрипт, который выполнит HTTP POST для самодельной службы. Это позволяет нам узнать, что сервер наконец загружен, и что сразу после первых шагов cloud-init исходный будет ждать окончания процесса и делать вызов только тогда, когда вы можете войти на свой сервер.
Что ж, это хороший вопрос! Мы стараемся сделать этот процесс как можно проще, и это сложная задача, потому что все дистрибутивы разные, даже один и тот же дистрибутив в другой версии может отличаться.
Например, мы предоставляем 4 вида RedHat © Entreprise Linux.
Настройка для RHEL 7 немного отличается от настройки для RHEL 8, но у вас есть те же сценарии, которые нужно применить (или не применять), когда дело доходит до лицензирования. Поскольку у нас нет возможности лицензировать RHEL, стандартным методом покупки лицензии у OVH является способ BYOL, который означает: « Принесите свою собственную лицензию» .
На самом деле нет. Но у RedHat © есть стандарты, и мы должны их уважать, поэтому возникают проблемы.
Перед тем как быть в состоянии продать RedHat © Entreprise Linux на Baremetal, мы должны были удостоверить каждый наш аромат с аппаратными тестами, такие как сети, вычислительные, доступ к дискам, память, виртуализации возможностей, и многой другим. Процесс долгий, но вы должны знать, что делаете, еще лучше, потому что даже если каждый дистрибутив отличается, каждый сервер тоже.
Итак, да, мы с гордостью можем сказать, что достигли этого подвига, как и другие крупные производители.
Как я уже говорил вам, этот процесс довольно близок к OpenStack Ironic, и, если это может быть будущее с точки зрения предоставления Baremetal как услуги, может потребоваться небольшая работа над вашим облачным образом.
И если вы готовы к этой задаче, возможно, создайте свой собственный образ, чтобы установить его на свои новые серверы, с помощью функции « Принесите свое собственное изображение», которая сейчас находится в разработке!
Что такое облачный образ?
Для тех, кто не знает, готовые к облаку образы — это предустановленный дистрибутив, который поставляется в формате одного файла (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 и другие.
Затем образ помещается в нашу зеркальную инфраструктуру, которая передаст этот образ службе, которая выполнит установку.
Процесс
Чтобы установить такой образ на ваш сервер без операционной системы , мы загружаем его в образе восстановления и выполняем с ним множество операций, таких как:
- протирание дисков
- настройка разделов и RAID (если есть)
- создание раздела config-drive (об этом поговорим позже)
- монтирование всех установочных разделов во временную папку
- rsyncing изображения во временной папке
- сделать его загрузочным (позже в этой части)
- если у дистрибутива должна быть лицензия, требуется один дополнительный шаг, например:
- регистрация в RedHat © Subscription Manager '
- перезагрузка
- жду телефон
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 комментариев