Оркестрация Heat
Openstack Heat — служба, которая позволяет шаблонизировать установку и конфигурацию как отдельных виртуальных серверов, так и целых окружений с возможностью конфигурировать ПО внутри виртуальных машин.
Для понимания оркестрации в Openstack важны такие элементы как “стек” и “шаблон”.
Стек (stack) — набор облачных ресурсов (машин, логических томов, сетей и т.д.), объединённых в цельную структуру.
Шаблон (template) — это описание стека. Обычно оно представлено в виде текстового файла в особом формате. Шаблон содержит описание ресурсов и их связи. Он используется для автоматизации развертывания инфраструктуры, сервисов и приложений.
HOT (Heat Orchestration Template) — формат предназначенный исключительно для OpenStack. Представляет собой документ формата YAML или JSON. С помощью шаблонов в этом формате Openstack Heat может отправлять запросы к API для создания инфраструктуры сервера.
Запуск стека
- В главном меню платформы выберите Проект > Оркестратор > Стеки.
- Нажмите Запустить стек и заполните параметры:
- Источник шаблона -- выберите один из источников:
- Файл -- позволяет загрузить с вашего локального хранилища шаблон стека в формате yaml или json. Для этого нажмите кнопку Выберите файл.
- Непосредственный ввод -- позволяет ввести свой код в окно Данные шаблона.
- URL -- позволяет указать адрес расположения шаблона по внешней HTTP-ссылке.
- Источник среды:
- Файл -- позволяет загрузить с вашего локального хранилища шаблон среды для стека.
- Непосредственный ввод -- позволяет ввести свой код в окно Данные среды.
- Нажмите Далее.
Пример простой схемы шаблона стека:
heat_template_version: 2015-04-30
description: Simple template to deploy a single compute instance
resources:
my_instance:
type: OS::Nova::Server
properties:
key_name: my_key
image: IMG-x86_64
flavor: m1.small
heat_template_version-- параметр описывает версию шаблона Heat.description-- необязательный параметр для добавления текста, который объясняет назначение шаблона.resources-- параметр с указанием ресурсов. Обязательно указать как минимум один ресурс. В примере используется ОС Nova Server и указаны значения для ключа, образа и флейвора ВМ (key_name,imageиflavor)
Типы ресурсов
В этом разделе можно просмотреть список системных типов ресурсов.
| Ресурс | Описание |
| OS::Heat::AccessPolicy | Ресурс для определения того, к каким ресурсам могут получить доступ пользователи. |
| OS::Heat::CloudConfig | Ресурс конфигурации для представления cloud-init cloud-config. Этот ресурс позволяет определять и сохранять cloud-config YAML с помощью config API. Все встроенные функции в этой конфигурации разрешатся перед сохранением результата. Cloud-config -- это конфигурация только для загрузки, любые изменения в описании конфига приведут к замене всех серверов, которые ссылаются на него. |
| OS::Heat::InstanceGroup | Группа инстансов, которая может масштабировать произвольные экземпляры. Ресурс, позволяющий создавать определенное количество экземпляров. |
| AWS::AutoScaling::Launch Configuration | Позволяет связывать масштабируемые ресурсы с ресурсами балансировщика нагрузки. |
| OS::Heat::None | Позволяет отключить определенные ресурсы с помощью `resource_registry`. Сам по себе ресурс ничего не делает, однако может отключить любой другой ресурс, потому что он будет принимать любые свойства и возвращать любой атрибут как None. |
| OS::Nova::KeyPair | Ресурс для создания новых пар ключей. Пара ключ-значение -- это ssh-ключ, который может быть введен в сервер при запуске. |
| OS::Nova::Server | Ресурс для управления инстансами Nova. Этот ресурс управляет запущенными экземплярами виртуальных машин в облаке OpenStack. Ресурс для управления инстансами Nova. Этот ресурс управляет запущенными экземплярами виртуальных машин в облаке OpenStack. |
| OS::Nova::ServerGroup | Ресурс для управления группой серверов Nova. Группы серверов позволяют отобразить экземпляры (VM/VPS), которые находятся на одном и том же узле гипервизора или на другом. |
Версии шаблонов
На странице Проект > Оркестратор > Версии шаблонов расположены шаблоны, из которых можно создать облачную инфраструктуру.
Шаблоны могут содержать определенные свойства ресурса. Например, приведенный ниже шаблон может быть использован для простого развертывания одного вычислительного экземпляра.\
heat_template_version: 2015-04-30
description: Simple template to deploy a single compute instance
resources:
my_instance:
type: OS::Nova::Server
properties:
key_name: my_key
image: F18-x86_64-cfntools
flavor: m1.small
Входные параметры шаблона
Входные параметры, определенные в разделе Параметры готового шаблона, позволяют настраивать шаблон во время развертывания.
Например, с помощью этих параметров можно задавать пользовательские имена для пар ключей или идентификаторы для образов ВМ, которые будут использоваться для развертывания.
Пример расширенных параметров для создания пары ключей и собственного образа compute:
heat_template_version: 2015-04-30
description: Simple template to deploy a single compute instance
parameters:
key_name:
type: string
label: Key Name
description: Name of key-pair to be used for compute instance
image_id:
type: string
label: Image ID
description: Image to be used for compute instance
instance_type:
type: string
label: Instance Type
description: Type of instance (flavor) to be used
resources:
my_instance:
type: OS::Nova::Server
properties:
key_name: { get_param: key_name }
image: { get_param: image_id }
flavor: { get_param: instance_type }
В приведенном выше примере есть три входных параметра -- key_name, image_id, instance_type. Эти параметры нужно задать развертывании ВМ.
Фиксированные значения для соответствующих свойств ресурса были заменены ссылками на соответствующие входные параметры с помощью функции get_param.
Ограничение ввода данных пользователем
В некоторых случаях может потребоваться ограничить значения входных параметров, которые могут указывать пользователи. Например, если требуется ограничить максимальный и минимальный размер параметра для работы программного обеспечения.
Это можно сделать с помощью параметра constraints (подробнее в разделе "Ограничения параметров"). Например, в приведенном ниже примере допускается предоставление только трех значений в качестве входных данных для параметра instance_type:
parameters:
instance_type:
type: string
label: Instance Type
description: Type of instance (flavor) to be used
constraints:
- allowed_values: [ m1.medium, m1.large, m1.xlarge ]
description: Value must be one of m1.medium, m1.large or m1.xlarge.


No comments to display
No comments to display