Оркестрация на serverplus: инфраструктура как код (Heat)
Оркестрация — это способ описать целую инфраструктуру текстом (в шаблоне) и развернуть её одной кнопкой. Вместо того чтобы вручную создавать сервер, потом сеть, диск, IP и правила по отдельности, вы описываете весь набор в одном файле — и облако само поднимает все ресурсы в правильном порядке.
Технически за разделом стоит OpenStack Heat — движок «инфраструктуры как кода» (IaC). Один такой развёрнутый комплект ресурсов называется стек.
Раздел разбит на три вкладки: Стеки, Типы ресурсов и Версии шаблонов.
Зачем это нужно
- Воспроизводимость. Один и тот же шаблон разворачивает идентичную инфраструктуру сколько угодно раз — dev, staging, prod получаются одинаковыми.
- Скорость. Комплект из десятков ресурсов поднимается за один запуск, а не кликами по каждому.
- Порядок и связи. Heat сам понимает зависимости: сначала сеть и подсеть, потом сервер в этой сети, потом IP на сервер.
- Управляемость. Всю группу ресурсов можно обновить или удалить целиком, как единое целое (стек).
- Версионирование. Шаблон — это текст: его удобно хранить в git, ревьюить и откатывать.
Вкладка «Стеки»
Стек (stack) — это развёрнутый экземпляр шаблона: конкретный набор ресурсов, созданный из описания. Здесь вы создаёте стеки, следите за их статусом и удаляете. Пока стеков нет, вкладка пустая с кнопкой Создать стек.
Как создать стек
Нажмите Создать стек и заполните форму:
- Расположение — регион (
uz-tas1 / RegionOne). - Stack Name — имя стека, например
web-prod. - Creation Timeout (minutes) — сколько ждать развёртывания до отмены (по умолчанию
60). - Rollback On Failure — если включить, при ошибке Heat откатит уже созданные ресурсы, не оставляя «полусобранный» стек.
- Template Source — откуда взять шаблон:
File(загрузить файл),Direct Input(вставить текст) илиURL(по ссылке). - Environment Source (необязательно) — файл окружения с переопределением параметров, тем же способом: File / Direct Input / URL.
После заполнения нажмите + Создать стек — Heat начнёт разворачивать ресурсы.
Шаблон (HOT): из чего состоит
Шаблон Heat (формат HOT, обычно YAML) описывает, что и с какими параметрами создать. Основные секции:
heat_template_version— версия формата шаблона (см. вкладку «Версии шаблонов»).description— описание, для чего шаблон.parameters— входные параметры (например размер сервера, имя сети), которые задаются при запуске.resources— сами ресурсы: серверы, сети, диски, IP и т.д.outputs— что вернуть после развёртывания (например публичный IP сервера).
Минимальный пример — один сервер с параметром размера:
heat_template_version: 2021-04-16 description: Один облачный сервер parameters: flavor: type: string default: s1-1 resources: web_server: type: OS::Nova::Server properties: name: web-1 flavor: { get_param: flavor } image: Ubuntu 24.04 outputs: server_name: value: { get_attr: [web_server, name] }
Вкладка «Типы ресурсов»
Это каталог всех ресурсов, которые можно использовать в шаблоне. Каждый тип — «кирпичик» инфраструктуры. Поддерживаются две группы имён:
- OS::… — «родные» ресурсы OpenStack:
OS::Nova::Server(сервер),OS::Neutron::Net(сеть),OS::Neutron::Subnet(подсеть),OS::Cinder::Volume(диск),OS::Neutron::FloatingIPи другие. - AWS::… — совместимые с AWS CloudFormation типы (
AWS::EC2::Instance,AWS::AutoScaling::AutoScalingGroupи т.д.), чтобы переносить привычные шаблоны.
По типу ресурса видно, какие свойства он принимает — это подсказка при написании шаблона.
Вкладка «Версии шаблонов»
Список поддерживаемых версий формата шаблонов. Строка heat_template_version в вашем шаблоне должна быть из этого списка. Типы:
- hot — современный формат Heat (
heat_template_version.2013-05-23…2021-04-16), с понятными псевдонимами по релизам OpenStack:newton,ocata,pike,queens,rocky,wallaby. - cfn — формат, совместимый с AWS CloudFormation (
AWSTemplateFormatVersion.2010-09-09,HeatTemplateFormatVersion.2012-12-12).
Совет. Берите версию поновее (например
2021-04-16) — в ней доступно больше функций и ресурсов. Более старые версии нужны в основном для совместимости со старыми шаблонами.
Типовые сценарии
- Готовая среда «под ключ». Шаблон, который поднимает сеть + сервер + диск + IP + правила — одним стеком для нового проекта или клиента.
- Одинаковые окружения. Dev / staging / prod из одного шаблона с разными параметрами — без расхождений «настроили по-разному».
- Автомасштабирование. Группа серверов (AutoScalingGroup), которая растёт и уменьшается по нагрузке.
- Обновление инфраструктуры. Поменяли шаблон → обновили стек; Heat пересоздаёт только то, что изменилось.
Оркестрация, Kubernetes и ручное создание — в чём разница
- Ручное создание в панели — удобно для одного-двух серверов, но не воспроизводимо и легко забыть шаг.
- Оркестрация (Heat) управляет облачной инфраструктурой: серверами, сетями, дисками, IP как единым стеком.
- Kubernetes управляет контейнерами внутри кластера. Это разные уровни: Heat может развернуть сам кластер/серверы, а Kubernetes — приложения в контейнерах на них.
Частые вопросы
Нужно ли уметь программировать, чтобы пользоваться оркестрацией?
Программировать — нет, но нужно освоить формат шаблона HOT (YAML) и знать нужные типы ресурсов. Это ближе к «описанию по образцу», чем к разработке. Начать проще всего с небольшого готового шаблона и дорабатывать его.
Что такое стек простыми словами?
Стек — это «пакет» ресурсов, созданный из одного шаблона и управляемый как целое. Удалили стек — удалились все входящие в него ресурсы; обновили — обновились согласованно.
Чем Template Source File / Direct Input / URL отличаются?
Это лишь способ передать один и тот же шаблон: File — загрузить файл с компьютера, Direct Input — вставить текст прямо в поле, URL — указать ссылку, откуда его скачать.
Зачем нужен Rollback On Failure?
Чтобы при ошибке в середине развёртывания не остался «мусор» из наполовину созданных ресурсов. С включённым откатом Heat удалит всё, что успел создать, и вернёт чистое состояние.
Что такое Environment (окружение)?
Отдельный файл, который переопределяет параметры и настройки шаблона под конкретный запуск — удобно, когда один шаблон используется для разных сред с разными значениями.