Настройка услуги «Виртуальная машина» для гипервизоров
Общая информация¶
Настоящая инструкция предназначена для администраторов, выполняющих первичную настройку сервиса.
Виртуальная машина — это базовая вычислительная единица в облачной инфраструктуре, предоставляющая пользователю изолированное окружение для работы. Виртуальные машины могут использоваться для развертывания сервисов, тестирования приложений, выполнения вычислений и других задач.
Для настройки услуги "Виртуальная машина" необходимо выполнить следующие шаги:
- настройка диалогового окна,
- настройка каталога сервисов,
- настройка элементов каталога.
После настройки услуги «Виртуальная машина» сервис будет доступен к заказу в каталоге «Nimbius Services»:

Сервисы Нимбиус на основе виртуальной машины настраиваются аналогично по указанным шагам.
Настройка диалогового окна¶
- Выберите в боковом меню раздел Automation -> Embedded Automate -> Customization -> Service Dialogs.
- Выберите раздел Import/Export и загрузите стандартный диалог заказа виртуальной машины, поставляемый в составе Нимбиус nimbius_vm_provision .

- После загрузки диалог с заполненными настройками появится в разделе Service Dialogs

- Если нужно создать собственную кастомную услугу, перейдите в раздел Automation -> Automate -> Customization -> Service Dialogs -> Add a new Dialog. Настройте диалог - добавьте разделы, поля для формы заказа услуги. Сохраните форму и настройте поля.

Часть полей могут быть заполнены любыми значениями по выбору пользователя. Другая часть отображает допустимые значения. Перечень допустимых значений генерируется специализированными методами, указанными в таблице. Необязательные поля могут быть удалены из диалога при необходимости.
Описание полей и значений на примере диалога «nimbius_vm_provision»
| Описание поля | Имя поля | Обязат. | Динамич. | Метод генерации |
|---|---|---|---|---|
| Environment | tag_0_environment | Да | Да | list_environments |
| Location | tag_0_location | Да | Да | list_locations |
| Ресурсный пул | placement_rp_name | Да | Нет | list_resource_pools |
| Имя сервиса | service_name | Нет | Да | - |
| Описание сервиса | service_description | Нет | Нет | - |
| Template | source_id | Да | Да | list_templates |
| CPU | option_0_cpu_flavor | Да | Да | list_cpu_flavors |
| Memory (GB) | vm_memory | Да | Да | list_memory |
| Объем базовых дисков (Гб) | base_disks_size | Нет | Да | baze_disks_size |
| Тип основных дисков | tag_0_disk_type | Нет | Нет | - |
| Network | vlan | Нет | Да | list_networks |
| Префикс имени ВМ | vm_name | Нет | Нет | - |
| Описание ВМ | vm_description | Нет | Нет | - |
| Дополнительный диск (Гб) | additional_disk_size | Нет | Нет | - |
| Тип дополнительного диска | additional_disk_type | Нет | Нет | - |
| Биллинг | service_billing | Да | Нет | - |
| Откат изменений | rollback_enable | Да | Нет | - |

Настройка каталогов сервисов¶
Каталоги сервисов необходимы для корректного развертывания облачных ресурсов.
1. Перейдите в раздел бокового меню Services → Catalogs → Catalogs.
2. Создайте каталог сервисов Configuration → Add a New Catalog

Настройка элементов каталога сервисов¶
- Перейдите в раздел бокового меню Services → Catalogs → Catalog Items и выберите созданный на предыдущем шаге каталог
- Добавьте сервисы в каталог Configuration → Add a New Catalog Item
- Выберите Catalog Item Type = Generic
- Заполните поля для виртуальной машины. Пример заполнения приведен на скриншоте

Описание state machine для услуги Виртуальная машина¶
Процесс развертывания услуги Виртуальная машина¶
Развертывание услуги "Виртуальная машина" включает в себя две взаимосвязанные последовательности действий (state machine):
- NimbiusVM (service state machine)
- Provision VM from Template (VM state machine)
В service state machine задается последовательность действий, которые необходимо выполнить для создания сервиса. Конфигурация находится в домене NIMBIUS_CONFIG/Service/Provisioning/Provisioning/ServiceProvision_Template/NimbiusVM
Перечень шагов для NimbiusVM и описание их назначения представлен в таблице ниже.
| Шаг | Метод | Описание | Комментарий |
|---|---|---|---|
| Sequencer | /Service/Provisioning/StateMachines/Methods/GroupSequenceCheck |
Определяет очередность формирования запросов на создание сервисов в случае, если услуга состоит из нескольких дочерних сервисов (bundle). | |
| SyncBillingPriceOrders | /Integration/Billing/Billing/sync_price_orders |
Отправляет запрос на синхронизацию стоимости заказа в биллинг. | |
| AddAadditionalDialogOptions | /Service/Provisioning/StateMachines/Methods/AddAadditionalDialogOptions |
Добавляет дополнительные диалоговые опции, которые отсутствуют в диалоговом окне заказа услуги, но необходимы для ее корректного развертывания. | Взаимодействует с методами: - nimbius_placement_settings - в методе содержатся настройки для размещения ВМ; - PrepareAdditionalDialogOptions - в методе задаются дополнительные диалоговые опции; - PrepareAdditionalDialogOptionsModule - вспомогательные функции. |
| PreProvision | /Service/Provisioning/StateMachines/Methods/PreProvision |
Назначает владельца, группу владельца и custom attribute "addr_mode" для сервиса. |
|
| DialogParser | /Service/Provisioning/StateMachines/Methods/DialogParser |
Выполняет парсинг информации о диалоговых опциях. | |
| NimbiusVMService | /Service/Provisioning/StateMachines/Methods/NimbiusVMService |
- Создает тэги и категории тегов на основе диалоговых опций. - Перезаписывает имя и описание сервиса. - Назначает на сервис теги на основе диалоговых опций. - Назначает опции, необходимые для именования ВМ ( vm_name, linux_host, name, target_name и т.д.). - Добавляет диалоговые опции и теги в дочерние задачи. - Проверяет валидность аргументов и отправляет запрос на создание ВМ. - Устанавливает custom attribute "vm provision requests" для сервиса. |
Взаимодействует с методом: - nimbius_placement_settings - в методе содержатся настройки для размещения ВМ. |
| CheckVmProvisioned | /Service/Provisioning/StateMachines/Methods/CheckVmProvisionStatus |
Ожидает корректного завершения всех запросов на создание ВМ. | |
| Provision | /Service/Provisioning/StateMachines/Methods/Provision |
Создает сервис в БД. | |
| СheckProvisioned | /Service/Provisioning/StateMachines/Methods/CheckProvisioned |
Ожидает корректного завершения создания сервиса. | |
| JoinDomain | /Integration/ActiveDirectory/PlaybooksMethods/JoinDomain |
Вводит linux ВМ в домен и регистрирует A и PTR записи на DNS сервере. Устанавливает custom attribute "vms_ip_address" для сервиса. |
Взаимодействует с методом: - GetServiceVmsIpAddresses - поиск IP-адресов для всех виртуальных машин сервиса и запись найденных адресов в custom attribute "vms_ip_address" сервиса. |
| SetAnsibleVars | Используется для установки переменных, необходимых для запуска ansible playbook. | ||
| RunPlaybook | Используется для запуска ansible playbook. | ||
| SyncBilling | /Integration/Billing/Billing/sync |
Отправляет запрос на синхронизацию в биллинг. | |
| EmailOwner | /System/Notification/Email/ServiceProvisionComplete?event=service_provisioned |
Отправляет email-уведомление пользователю о том, что сервис создан. | |
| Rollback | /Service/Provisioning/StateMachines/Methods/Rollback |
Запускает процедуру отката изменений в случае ошибки развертывания. | |
| Finished | /System/CommonMethods/StateMachineMethods/service_provision_finished |
Отправляет уведомление и отмечает в БД, что создание сервиса завершено. |
В VM state machine задается последовательность действий, которые необходимо выполнить для создания виртуальной машины. Конфигурация находится в домене NIMBIUS_CONFIG/Infrastructure/VM/Provisioning/StateMachines/VMProvision_VM/Provision VM from Template (template)
Перечень шагов для Provision VM from Template и описание их назначения представлен в таблице ниже.
| Шаг | Метод | Описание | Комментарий |
|---|---|---|---|
| CustomizeRequest | /Infrastructure/VM/Provisioning/StateMachines/Methods/CustomizeRequest#${/#miq_provision.source.vendor} |
Осуществляется установка опций, необходимых для присвоения имени ВМ в процессе ее настройки, и выбор используемых VMware customization specification или cloud-init template (метод специфический для конкретного провайдера). | |
| Placement | /Infrastructure/VM/Provisioning/Placement/default#${/#miq_provision.source.vendor} |
Выбирает целевое расположение ВМ в виртуальной инфраструктуре (метод специфический для конкретного провайдера). | Взаимодействует с методами: - nimbius_placement_settings - настройки размещения ВМ; - log_object - отображает сообщения журнала для атрибутов объекта. |
| PreProvision | /Infrastructure/VM/Provisioning/StateMachines/Methods/PreProvision#${/#miq_provision.source.vendor} |
Устанавливает дополнительные опции для выбора целевого расположения ВМ в виртуальной инфраструктуре (метод специфический для конкретного провайдера). | |
| AquireIPAddress | /NetBox/NetBox/AquireIPAddress |
Резервирует IP-адрес в IPAM. | Взаимодействует с методами: - ClassRestCore - отправка стандартных REST-запросов; - ClassNetBox - отправка REST-запросов в NetBox. |
| Provision | /Infrastructure/VM/Provisioning/StateMachines/Methods/Provision |
Создает ВМ в виртуальной инфраструктуре. | |
| CheckProvisioned | /Infrastructure/VM/Provisioning/StateMachines/Methods/CheckProvisioned |
Ждет корректного завершения создания ВМ в виртуальной инфраструктуре. | |
| PostProvision | /Infrastructure/VM/Provisioning/StateMachines/Methods/PostProvision |
Назначается имя сервису, ВМ добавляется к сервису, для ВМ назначается владелец, группа владельца и теги. | |
| AddDisk | /Infrastructure/VM/Provisioning/StateMachines/Methods/AddDisk |
Добавляет дополнительный диск к ВМ. | |
| CheckDiskAdded | /Infrastructure/VM/Provisioning/StateMachines/Methods/CheckDiskAdded |
Проверка квот при добавлении дополнительного диска к ВМ. | |
| StartVM | /Infrastructure/VM/Provisioning/StateMachines/Methods/StartVM |
Включает ВМ. | |
| WaitForVMIPAddresses | /Infrastructure/VM/Provisioning/StateMachines/Methods/WaitForVMIPAddresses |
Ждет корректного назначения IP-адреса для ВМ в виртуальной инфраструктуре. | |
| WaitForVMHostName | /Infrastructure/VM/Provisioning/StateMachines/Methods/WaitForVMHostName |
Ждет корректного назначения имени для ВМ в виртуальной инфраструктуре. | |
| EmailOwner | /Infrastructure/VM/Provisioning/Email/MiqProvision_Complete |
Отправляет email-уведомление пользователю о том, что ВМ создана. | |
| Finished | /System/CommonMethods/StateMachineMethods/VmProvisionFinished |
Отправляет уведомление (notification) и отмечает в БД, что создание ВМ завершено. |
Процесс удаления услуги Виртуальная машина¶
Удаление услуги "Виртуальная машина" включает в себя две взаимосвязанные последовательности действий (state machine):
- Default (service state machine);
- Default (VM state machine).
В service state machine задается последовательность действий, которые необходимо выполнить для удаления сервиса. Конфигурация находится в домене NIMBIUS_VM/Service/Retirement/StateMachines/ServiceRetirement/Default
Перечень шагов для Default и описание их назначения представлен в таблице ниже
| Шаг | Метод | Описание |
|---|---|---|
| StartRetirement | /Service/Retirement/StateMachines/Methods/StartRetirement |
Выполняется проверка того, что сервис не находится в процессе удаления. Запуск удаления сервиса. |
| ReleaseIPAddress | /NetBox/NetBox/ReleaseIPAddress |
Удаление зарезервированного IP адреса в IPAM. |
| RemoveAdRecord | /Integration/ActiveDirectory/WinrmMethods/RemoveAdRecord |
Удаление аккаунта компьютера из Microsoft Active Directory. |
| RemoveDnsRecord | /Integration/ActiveDirectory/WinrmMethods/RemoveDnsRecord |
Удаление DNS записей из зоны на Microsoft DNS сервере. |
| RetireService | /Service/Retirement/StateMachines/Methods/RetireService |
|
| CheckServiceRetired | /Service/Retirement/StateMachines/Methods/CheckServiceRetired |
Проверка, что все задачи на удаление завершены. |
| SyncBilling | /Integration/Billing/Billing/sync |
Отправка запроса на синхронизацию в биллинг. |
| FinishRetirement | /Service/Retirement/StateMachines/Methods/FinishRetirement |
Установка атрибута, что сервис удален. Отправка уведомления пользователю. |
| DeleteServiceFromVMDB | /Service/Retirement/StateMachines/Methods/DeleteServiceFromVMDB |
Удаление сервиса из базы данных. |
В VM state machine задается последовательность действий, которые необходимо выполнить для удаления виртуальной машины.
Конфигурация находится в домене NIMBIUS_VM/Infrastructure/VM/Retirement/StateMachines/VMRetirement/Default
Перечень шагов для Default и описание их назначения представлен в таблице ниже
| Шаг | Метод | Описание |
|---|---|---|
| StartRetirement | /Infrastructure/VM/Retirement/StateMachines/Methods/StartRetirement |
Выполняется проверка того, что ВМ не находится в процессе удаления. Запуск удаления ВМ. |
| PreRetirement | /Infrastructure/VM/Retirement/StateMachines/Methods/PreRetirement#${/#vm.vendor} |
Выключение ВМ. |
| CheckPreRetirement | /Infrastructure/VM/Retirement/StateMachines/Methods/CheckPreRetirement#${/#vm.vendor} |
Проверка, что ВМ выключилась. |
| RemoveFromProvider | /Infrastructure/VM/Retirement/StateMachines/Methods/RemoveFromProvider |
Удаление ВМ в виртуальной инфраструктуре. |
| EmailOwner | /System/Notification/Email/InfrastructureVmRetired?event=vm_retired |
Отправка почтового уведомления о том, что ВМ удалена. |
| CheckRemovedFromProvider | /Infrastructure/VM/Retirement/StateMachines/Methods/CheckDeletedFromProvider |
Проверка того, что ВМ удалилась в виртуальной инфраструктуре. |
| FinishRetirement | /Infrastructure/VM/Retirement/StateMachines/Methods/FinishRetirement |
Установка атрибута ВМ удалена. Отправка уведомления пользователю. |
| DeleteFromVMDB | /Infrastructure/VM/Retirement/StateMachines/Methods/DeleteFromVMDB |
Удаление ВМ из базы данных. |