Skip to main content

Оркестрация Heat

Openstack Heat — служба, которая позволяет шаблонизировать установку и конфигурацию как отдельных виртуальных серверов, так и целых окружений с возможностью конфигурировать ПО внутри виртуальных машин.

Для понимания оркестрации в Openstack важны такие элементы как “стек” и “шаблон”.

Стек (stack) — набор облачных ресурсов (машин, логических томов, сетей и т.д.), объединённых в цельную структуру.

Шаблон (template) — это описание стека. Обычно оно представлено в виде текстового файла в особом формате. Шаблон содержит описание ресурсов и их связи. Он используется для автоматизации развертывания инфраструктуры, сервисов и приложений.

HOT (Heat Orchestration Template) — формат предназначенный исключительно для OpenStack. Представляет собой документ формата YAML или JSON. С помощью шаблонов в этом формате Openstack Heat может отправлять запросы к API для создания инфраструктуры сервера.

Запуск стека

  1. В главном меню платформы выберите Проект > Оркестратор > Стеки.
  2. Нажмите Запустить стек и заполните параметры:
  • Источник шаблона -- выберите один из источников:
    • Файл -- позволяет загрузить с вашего локального хранилища шаблон стека в формате yaml или json. Для этого нажмите кнопку Выберите файл.
    • Непосредственный ввод -- позволяет ввести свой код в окно Данные шаблона.
    • URL -- позволяет указать адрес расположения шаблона по внешней HTTP-ссылке.
  • Источник среды:
    • Файл -- позволяет загрузить с вашего локального хранилища шаблон среды для стека.
    • Непосредственный ввод -- позволяет ввести свой код в окно Данные среды.
  1. Нажмите Далее.

orchestration_template.png

Пример простой схемы шаблона стека:

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), которые находятся на одном и том же узле гипервизора или на другом.

Версии шаблонов

На странице Проект > Оркестратор > Версии шаблонов расположены шаблоны, из которых можно создать облачную инфраструктуру.

orchestration_template-version.png

Шаблоны могут содержать определенные свойства ресурса. Например, приведенный ниже шаблон может быть использован для простого развертывания одного вычислительного экземпляра.\

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.