Настройка услуги «Виртуальная машина» для гипервизоров
Общая информация¶
Услуга «Виртуальная машина» включает:
- механизм размещения виртуальных машин на платформах виртуализации без необходимости программирования;
- интеграцию с IPAM Netbox для автоматического резервирования и освобождения IP-адресов;
- диалоговое окно заказа виртуальной машины.
После установки Нимбиус услуга «Виртуальная машина» доступна к заказу в каталоге «Nimbius Services»:
Важно
Для успешного заказа Виртуальной машины с использованием услуги необходимо:
- Настройка диалогового окна;
- Настроить интеграцию Нимбиус с платформой виртуализации;
- Настроить конфигурацию размещения виртуальных машин;
- Настроить автоматическое именование виртуальных машин;
- Настроить интеграцию с IPAM Netbox для автоматической резервации и освобождения IP-адресов.
Настройка диалогового окна¶
Для настройки диалогового окна следует выбрать меню «Automation -> Automate -> Customization -> Service Dialogs». Стандартный диалог заказа виртуальной машины, поставляемый в составе Нимбиус, называется «nimbius_vm_provision».
Поля, доступные в диалоге, приведены в таблице ниже. Часть полей могут быть заполнены любыми значениями по выбору пользователя. Другая часть отображает допустимые значения. Перечень допустимых значений генерируется специализированными методами, указанными в таблице. Необязательные поля могут быть удалены из диалога при необходимости.
Описание полей и значений для диалога «nimbius_vm_provision»
Описание поля | Имя поля | Обязат. | Динамич. | Метод генерации допустимых значений |
---|---|---|---|---|
Environment | tag_0_environment | Да | Да | list_environments |
Location | tag_0_location | Да | Да | list_locations |
VM name | vm_name | Нет | Нет | - |
VM description | vm_description | Нет | Нет | - |
Template | template_name | Да | Да | list_templates |
CPU | option_0_cpu_flavor | Да | Да | list_cpu_flavors |
Memory (GB) | vm_memory | Да | Нет | - |
Network | vlan | Да | Да | list_networks |
Owner | ownership_user_id | Нет | Нет | list_owner |
Owner group | ownership_group_id | Нет | Нет | list_owner_group |
Методы генерации допустимых значений размещены в домене, расположенный в Datastore: /NIMBIUS_VM/Service/DynamicDialogs.
Доступные конфигурации CPU размещены в домене, расположенный в Datastore: /NIMBIUS_VM/Common/FlavorConfig/flavorconfig.
Доступные окружения (environment) и площадки (location), а также шаблоны (templates) настраиваются как описано ниже.
Настройка размещения виртуальных машин¶
Конфигурация механизма размещения виртуальных машин находится в домене автоматизации Нимбиус «NIMBIUS_CONFIG»: «Automation -> Embedded Automate -> Explorer».
/NIMBIUS_CONFIG/StdLib/Settings/nimbius_placement_settings
Ниже приводится шаблон-пример конфигурации размещения и таблица с описанием параметров.
Важно
Конфигурация оформлена с использованием синтаксиса языка Ruby.
class PlacementSettings
def locations
locations = {
"cloud_lab_dc01" => {
"type" => "vmware",
"endpoint" => "vc.cloud.lab",
"description" => "Cloud Lab Location",
"cust_spec_linux" => "CustSpecL",
"cust_spec_windows" => "CustSpecW"
}
}
return locations
end
def domains
domains = {
"cloud.lab" => {
"domain_name" => "cloud.lab",
"servers_ou" =>
"OU=Tenants,OU=Servers,OU=Cloud,DC=cloud,DC=local",
"pshost" => "ps01.cloud.lab",
"domain_controller" => "dc01",
"dns_suffix" => "cloud.lab",
"dns_servers" => ["cloud.lab"]
}
}
return domains
end
def networks
networks = {
"VM Network 01" => {
"addr_mode" => "dhcp"
},
"VM Network 02" => {
"addr_mode" => "static",
"ipam" => "netbox",
"vlan_id" => 3236
}
}
return networks
end
def environments
environments = {
"cloud_lab" => {
"placement" => {
"cloud_lab_dc01" => {
"clusters" => [
"CLU01",
"CLU02"
],
"networks" => [
"VM Network 01",
"VM Network 02"
],
"datastores" => [
"DS01"
]
}
},
"domain" => "cloud.lab",
"tags" => [
"department/support"
],
"description" => "Cloud Lab (VMware)"
}
}
return environments
end
end
Важно
Секция «def domains» имеет параметры для подключения домена AD, в который нужно включить создаваемую ВМ. Автоматического включения в домен не происходит. Код, реализующий данную функциональность, должен быть разработан администратором системы самостоятельно.
domains = {
# имя домена, должно совпадать с параметром domain в секции environments
"cloud.lab" => {
# имя домена
"domain_name" => "cloud.lab",
# OU для размещения объекта «компьютер» в AD
"servers_ou" => "OU=Tenants,OU=Servers,OU=Cloud,DC=cloud,DC=local",
# Powershell Host
"pshost" => "ps01.cloud.lab",
# Имя Domain Controller
"domain_controller" => "dc01",
# DNS суффикс
"dns_suffix" => "cloud.lab",
# DNS суффикс
"dns_servers" => ["cloud.lab"]
}
}
Описание классов и значений nimbius_placement_settings
Класс | Пример заполнения | Описание |
---|---|---|
locations |
"cloud_lab_dc01" => {
|
Площадки (расположения) – соответствует географическому расположению в секции «environments». Каждый endpoint – это кластер виртуализации. Имя должно соответствовать имени логической сущности в подключенных провайдерах. |
networks | networks = {
|
Конфигурация сетей (имена сетей должны совпадать с именами в секции networks в описании окружения, а так же с именами портгрупп в платформе виртуализации) |
Networks (environments) |
"dvs" => "true"
|
Указывается, если vcenter настроен с dvswitch |
placement_rp_name (environments) |
"placement_rp_name" => ["ResPool01"]
|
Указывается, если vcenter настроен с resource pool |
placement_folder_name (environments) | "placement_folder_name" => [
|
Указывается полный путь до конечной папки размещения |
domain |
"domain" => "cloud.lab",
|
DNS-суффикс для имени ВМ |
tags | "tags" => [
|
Тэги, которые должны быть проставлены на сервисе ВМ (нужно предварительно создать в платформе Нимбиус) |
clusters | "clusters" => [
|
Кластеры виртуализации на данной площадке |
Пример-шаблон на несколько площадок и средств виртуализации:
class PlacementSettings
def locations
locations = {
"datacenter01" => {
"type" => "ovirt",
"endpoint" => "zvirt01",
"description" => "Pilot zVirt"
},
"datacenter02" => {
"type" => "vmware",
"endpoint" => "vc.cloud.lab",
"description" => "VMware",
"cust_spec_linux" => "linux",
"cust_spec_windows" => "windows"
},
"datacenter03" => {
"type" => "ovirt",
"endpoint" => "zvirt02",
"description" => "Red Virt"
},
}
return locations
end
def domains
domains = {
"cloud.lab" => {
"domain_name" => "cloud.lab",
"servers_ou" =>
"OU=Tenants,OU=Servers,OU=Cloud,DC=cloud,DC=local",
"pshost" => "ps01.cloud.lab",
"domain_controller" => "dc01",
"dns_suffix" => "cloud.lab",
"dns_servers" => ["cloud.lab"]
}
}
return domains
end
def networks
networks = {
"206-VLAN" => {
"addr_mode" => "dhcp"
},
"ovirtmgmt (ovirtmgmt)" => {
"addr_mode" => "dhcp",
# "ipam" => "netbox",
# "vlan_id" => 3236
},
"VM Network 01" => {
"addr_mode" => "dhcp"
},
"VM Network 02" => {
"addr_mode" => "static",
"ipam" => "netbox",
"vlan_id" => 3236,
"dvs" => "true"
}
}
return networks
end
def environments
environments = {
"zvirt" => {
"placement" => {
"datacenter01" => {
"clusters" => ["Default"],
"networks" => ["ovirtmgmt (ovirtmgmt)"],
"datastores" => ["hosted_storage"]
}
},
# "domain" => "cloud.lab",
"tags" => ["department/support"],
"description" => "Pilot zVirt"
},
"redvirt" => {
"placement" => {
"datacenter03" => {
"clusters" => ["Cluster01"],
"networks" => ["206-VLAN (206-VLAN)"],
"datastores" => ["Storage01"]
}
},
# "domain" => "cloud.lab",
"tags" => ["department/support"],
"description" => "Red Virt"
},
"vmware" => {
"placement" => {
"datacenter02" => {
"clusters" => [
"CLU01",
"CLU02"
],
"networks" => [
"VM Network 01",
"VM Network 02"
],
"datastores" => ["DS01"],
"placement_folder_name" => [
"datacenter02/CLU01/ResPool01/cloudlab/vms"
],
"placement_rp_name" => ["ResPool01"]
}
},
"domain" => "cloud.lab",
"tags" => ["department/support"],
"description" => "VMware"
}
}
return environments
end
end
Настройка автоматического именования виртуальных машин¶
Конфигурация автоматического именования виртуальных машин настраивается с помощью изменения словаря «NAMING_TEMPLATE» в «/NIMBIUS_CONFIG/StdLib/Settings/nimbius_vmname_settings». Пример конфигурации приведён ниже.
Важно
Конфигурация оформлена с использованием синтаксиса языка Ruby.
Конфигурация задана в виде объекта типа «словарь». Каждый элемент словаря - это часть имени ВМ. Ключом задается порядок компонента в имени, а значением - тип и конфигурация компонента.
Пример генерации имени ВМ
Постоянный текст | Платформа (w - windows, l - linux) |
Тег "location" | Первая буква тега "environment" | Постоянный текст | Индекс |
---|---|---|---|---|---|
vm | w | d01 | t | s | 0001 |
Результирующее имя: vmwd01ts0001
Соответствующая конфигурация:
**NAMING_TEMPLATE** = {
1 => {
"type" => "text",
"value" => "vm"
},
2 => {
"type" => "platform"
},
3 => {
"type" => "tag_long",
"category" => "location"
},
4 => {
"type" => "tag_short",
"category" => "environment"
},
5 => {
"type" => "text",
"value" => "s"
},
6 => {
"type" => "index",
"length" => 5
}
}.freeze
Настройка доступных конфигураций виртуальных машин¶
Конфигурация доступных конфигураций CPU виртуальных машин настраивается с помощью изменения словаря CPU в «/NIMBIUS_CONFIG/Common/FlavorConfig/flavorconfig».
Важно
Конфигурация оформлена с использованием синтаксиса языка Ruby.
Каждый тип ВМ задаётся в виде элемента словаря:
{
cpu_flavor: 'DESCRIPTION',
number_of_sockets: SOCKETS_NUM,
cores_per_socket: CORES_NUM
}
Выбор шаблонов для развертывания ВМ¶
Для того, чтобы выбрать доступные для развертывания шаблоны, необходимо протегировать их тегом «Available for provisioning» / «Available for provisioning».
Для этого необходимо выполнить:
- Выбрать перейти в раздел «Compute -> Infrastructure -> Virtual Machines»;
- Раскрыть слева список «Templates»;
-
Найти нужный шаблон, выбрать его, выбрать «Policy -> Edit tags»:
-
Выбрать необходимый тег как показано ниже:
Примечание
Описанное поведение может быть изменено. Для этого необходимо внести изменения в методу автоматизации:
- /NIMBIUS_VM/Service/DynamicDialogs /list_templates - метод, генерирующий перечень доступных шаблонов для диалогового окна создания ВМ.