From 3677cc917c08665e509c7dc2e04c9173aca70947 Mon Sep 17 00:00:00 2001 From: loskutovanl Date: Mon, 27 Nov 2023 16:57:31 +0300 Subject: [PATCH] update kvmvm resource --- ...ми-машинами-на-базе-KVM.md | 459 ++++++++++++++++++ ...ми-машинами-на-базе-KVM.md | 81 ---- Home.md | 2 +- 3 files changed, 460 insertions(+), 82 deletions(-) create mode 100644 07.02.11-Resource-функция-decort_cb_kvmvm-управление-виртуальными-машинами-на-базе-KVM.md delete mode 100644 07.02.11-Resource-функция-decort_kvmvm-управление-виртуальными-машинами-на-базе-KVM.md diff --git a/07.02.11-Resource-функция-decort_cb_kvmvm-управление-виртуальными-машинами-на-базе-KVM.md b/07.02.11-Resource-функция-decort_cb_kvmvm-управление-виртуальными-машинами-на-базе-KVM.md new file mode 100644 index 0000000..ac27351 --- /dev/null +++ b/07.02.11-Resource-функция-decort_cb_kvmvm-управление-виртуальными-машинами-на-базе-KVM.md @@ -0,0 +1,459 @@ +Функция доступна в версии провайдера 4.5.1 и выше. + +_Resource_ функция **decort_cb_kvmvm** служит для управления виртуальными машинами, создаваемыми в платформе DECORT на базе технологии виртуализации KVM. + +## Аргументы +_Resource_ функция **decort_cb_kvmvm** принимает следующие аргументы: + +| Аргумент | Тип | Обязательный | Описание | +| --- |---------------------------------------------------------------|--------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| name | string | :heavy_check_mark: | Имя виртуальной машины. Обратите внимание, что имя должно быть уникальным в рамках ресурсной группы. | +| rg_id | int | :heavy_check_mark: | Идентификатор ресурсной группы, которой принадлежит данная виртуальная машина. | +| driver | string | :heavy_check_mark: | Аппаратная архитектура виртуальной машины.
Может принимать одно из следующих значений:
* "KVM_X86" - виртуальная машина KVM на аппаратной платформе x86.
* "KVM_PPC" - виртуальная машина KVM на аппаратной платформе IBM Power. | +| cpu | int | :heavy_check_mark: | Количество процессоров. | +| ram | int | :heavy_check_mark: | Объём оперативной памяти в МБ.
| +| image_id | int | :heavy_check_mark: | Идентификатор образа, на базе которого создаётся загрузочный диск виртуальной машины.
| +| boot_disk_size | int | :x: | Размер загрузочного диска виртуальной машины в ГБ. | +| sep_id | int | :x: | ID SEP для создания загрузочного диска. Если не задан, будет использоваться sepId образа. Значение по умолчанию 0. | +|pool| string | :x: | Пул (если установлен sepId). Если значение не задано, то пул будет выбран системой. | +| cloud_init | string | :x: | Используется на этапе создания вм.
Параметры для утилиты _cloud_init_, которая используется в платформе DECORT для первичного конфигурирования виртуальной машины после её создания. | +| description | string | :x: | Текстовое описание виртуальной машины. | +| started | bool | :x: | Флаг запуска машины,
по-умолчанию - true.
Если true - машина включена,
если false - выключена. | +|alt_boot_id| int | :x: | ID live CD-ROM для загрузки образа. | +| stack_id | int | :x: | id стэка | +| is | string | :x: | Наименование системы | +| ipa_type | string | :x: | Тип аутентификатора | +| custom_fields | string | :x: | Кастомные поля | +| network | []Struct [см. ниже](#описание-блока-network-args) | :x: | Параметры сетевого подключения.
Если нужно сконфигурировать несколько сетевых подключений, данный блок можно задавать многократно - по одному на каждое подключение. | +| reason | string | :x: | Причина вызова | +| affinity_label | string | :x: | Метка для правил affinity | +| affinity_rules | []Struct [см. ниже](#описание-блока-affinity_rules-args) | :x: | Блок описания правил affinity. Блоков может быть несколько, один или отсутствовать. | +| anti_affinity_rules | []Struct [см. ниже](#описание-блока-anti_affinity_rules-args) | :x: | Блок описания правил anti-affinity. Блоков может быть несколько, один или отсутствовать. | +| disks | []Struct [см. ниже](#описание-блока-disks-args) | :x: | Описание диска. Таких может быть любое кол-во, либо не быть вообще | +| extra_disks | []int | :x: | Список идентификаторов дополнительных дисков, которые подключены к данной виртуальной машине помимо загрузочного диска. Если такие диски отсутствуют, то список будет пустым. | +| tags | []Struct [см. ниже](#описание-блока-tags-args) | :x: | Задание тэгов компьюта | +| port_forwarding | []Struct [см. ниже](#описание-блока-port_forwarding-args) | :x: | Настройка порт форвардинга для компьюта | +| user_access | []Struct [см. ниже](#описание-блока-user_access-args) | :x: | Предоставление доступов к компьюту | +| snapshot | []Struct [см. ниже](#описание-блока-snapshot-args) | :x: | Создание мнапшотов | +| rollback | []Struct [см. ниже](#описание-блока-rollback-args) | :x: | Rollback на определенный снапшот | +| cd | []Struct [см. ниже](#описание-блока-cd-args) | :x: | Добавление диска cd rom | +| pin_to_stack | bool | :x: | Флаг, отвечающий за добавление кмпьюта в стэк | +|target_stack_id| int |:x: | Узел, на который переместится машина | +|force_pin| bool |:x:| Флаг для принужительного добавления компьюта на стэк | +|enabled| bool |:x:| Флаг доступности компьюта для проведения с ним операций | +| pause | bool | :x: | Флаг, отвкчающий за pause/resume компьюта | +| reset | bool | :x: | Флаг, отвкчающий за reset компьюта | +|restore| bool |:x:| Восстановить удаленный компьют из корзины | +| auto_start | bool | :x: | Флаг, отвечающий за авто старт при редеплое компьюта | +| force_stop | bool | :x: | Флаг, отвечающий за стоп при редеплое компьюта | +| data_disks | string | :x: | Указание того, что делать с дисками при редеплое. Возможные значения: "KEEP", "DETACH" и "DESTROY" | +| detach_disks | bool | :x: | Отсоединение прикрепленных к виртуальной машине дисков перед ее удалением. Параметр считывается только при использовании команды `terraform destroy`, то есть только при удалении ресурса | +| permanently | bool | :x: | Мгновенное удаление виртуальной машины, минуя корзину. Параметр считывается только при использовании команды `terraform destroy`, то есть только при удалении ресурса | + +### Описание блока disks args + +| Аргумент | Тип | Обязательный | Описание | +| ----------- | ------ | ------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| disk_name | string | :heavy_check_mark: | Наименование диска | +| size | int | :heavy_check_mark: | Размер диска, GB | +| disk_type | string | :x: | Тип диска. Возможные значения: "D" - диск с данными, "B" - загрузочный диск | +| sep_id | int | :x: | ID storage endpoint | +| pool | string | :x: | Наименование пула для размещения диска | +| desc | string | :x: | Описание диска | +| image_id | int | :x: | ID образа | +| permanently | bool | :x: | Флаг для удаления диска. Если выставлен в true - диск будет моментально удален с платформы, иначе будет добавлен в корзину и его можно будет восстановить. Значение поля считывается только при операции `terraform destroy`. По умолчанию - false | + +### Описание блока network args + +| Аргумент | Тип | Обязательный | Описание | +| -------- |--------|--------------------| -------------------------------------------------------------------------------------------- | +| net_type | string | :heavy_check_mark: | тип сети, соответствующей данному подключению. "EXTNET" в случае прямого подключения во внешнюю сеть, "VINS" в случае подключения к Virtual Network Segment. | +| net_id | int | :heavy_check_mark: | идентификатор соответствующего сетевого сегмента: внешней сети в случае `net_type = "EXTNET"` и ViNS в случае `net_type = "VINS"` | +| ip_address | string | :x: | IP адрес, выделенный данному подключению. | +| mac | string | :x: |MAC адрес, назначенный соответствующему сетевому интерфейсу виртуальной машины. | + +### Описание блока affinity_rules args + +| Аргумент | Тип | Обязательный | Описание | +| -------- | ------ | ------------------ | -------------------------------------------------------------------------------------------- | +| topology | string | :heavy_check_mark: | Тип правила. Возможные значения - node, compute | +| policy | string | :heavy_check_mark: | Строгость правила. Возможные значения - RECOMMENDED (рекомендовано) и REQUIRED (обязательно) | +| mode | string | :heavy_check_mark: | Режим проверки. Возможные значения - EQ (равно), NE (не равно), ANY - любое | +| key | string | :heavy_check_mark: | Ключ правила | +| value | string | :heavy_check_mark: | Значение правила | + +### Описание блока anti_affinity_rules args + +| Аргумент | Тип | Обязательный | Описание | +| -------- | ------ | ------------------ | -------------------------------------------------------------------------------------------- | +| topology | string | :heavy_check_mark: | Тип правила. Возможные значения - node, compute | +| policy | string | :heavy_check_mark: | Строгость правила. Возможные значения - RECOMMENDED (рекомендовано) и REQUIRED (обязательно) | +| mode | string | :heavy_check_mark: | Режим проверки. Возможные значения - EQ (равно), NE (не равно), ANY - любое | +| key | string | :heavy_check_mark: | Ключ правила | +| value | string | :heavy_check_mark: | Значение правила | + +### Описание блока tags args + +| Аргумент | Тип | Обязательный | Описание | +| -------- | ------ | ------------------ | ------------- | +| key | string | :heavy_check_mark: | Ключ тэга | +| val | string | :heavy_check_mark: | Значение тэга | + +### Описание блока port_forwarding args + +| Аргумент | Тип | Обязательный | Описание | +| ----------------- | ------ | ------------------ | ------------------------------------------------------------------ | +| public_port_start | int | :heavy_check_mark: | Начало диапазона внешних портов для данного правила pfw | +| public_port_end | int | :x: | Конец диапазона внешних портов для данного правила pfw | +| local_port | int | :heavy_check_mark: | Локальный порт для данного правила pfw | +| proto | string | :heavy_check_mark: | Протокол создания правила pfw. Возможные значения: "tcp" или "udp" | + +### Описание блока user_access args + +| Аргумент | Тип | Обязательный | Описание | +| ----------- | ------ | ------------------ | -------------------------------------------------------------------------------------- | +| username | string | :heavy_check_mark: | Юзер, которому необходимо выдать определенные права на компьют | +| access_type | string | :heavy_check_mark: | Права, которые выдадутся юзеру на компьют. Возможные значения: "R", "RCX" или "ARCXDU" | + +### Описание блока snapshot args + +| Аргумент | Тип | Обязательный | Описание | +| -------- | ------ | ------------------ | -------------- | +| label | string | :heavy_check_mark: | Лейбл снапшота | + +### Описание блока rollback args + +| Аргумент | Тип | Обязательный | Описание | +| -------- | ------ | ------------------ | ------------------------------------------------ | +| label | string | :heavy_check_mark: | Лейбл снапшота на который нужно сделать rollback | + +### Описание блока cd args + +| Аргумент | Тип | Обязательный | Описание | +| -------- | --- | ------------------ | -------------------------------- | +| cdrom_id | int | :heavy_check_mark: | Идентификатор образа cdrom диска | + +## Возвращаемые значения +В случае успешного выполнения _resource_ функция **decort_cb_kvmvm** возвращает в указанную при вызове переменную следующие значения: + +| Параметр | Тип | Описание | +| --- |---------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| account_id | int | Уникальный идентификатор подписчика-владельца ("account") данной виртуальной машины. | +| account_name | string | Имя подписчика, которому принадлежит данная виртуальная машина. | +| acl | []Struct [см. ниже](#описание-структуры-acl) | Cписок Acces Control | +| affinity_label | string | Лейбл аффинити | +| affinity_rules | []Struct [см. ниже](#описание-структуры-affinity-rules) | Правила аффинити для компьютов | +| affinity_weight | int | weight аффинити | +| anti_affinity_rules | []Struct [см. ниже](#описание-структуры-affinity-rules) | Правила анти аффинити для компьютов | +| arch | string | Архитектура | +| boot_order | []string | Boot order | +|cd_image_id| int | cd image id | +| clone_reference | int | кол-во клонов | +| clones | []int | id клонов | +| compute_id | int | Идентификатор экземпляра _compute_, соответствующего данной виртуальной машине. | +| computeci_id | int | ID вычислительного ресурса | +| cpu | int | Количество виртуальных CPU, выделенных данному серверу. | +| created_by | string | Кем создан _compute_ | +| created_time | int | Время создания _compute_ | +| custom_fields | string | Кастомные поля | +| deleted_by | string | Кем удален _compute_ | +| deleted_time | int | Время удаления _compute_ | +| description | string | Текстовое описание виртуальной машины. | +| devices | string | Девайсы | +| disks | []Struct [см. ниже](#описание-структуры-disks) | информация о дисках компьюта | +| driver | string | Аппаратная архитектура данной виртуальной машины. | +| gid | int | GRID ID | +| guid | int | ID ресурса | +| image_id | int | Идентификатор образа ОС, на базе которого создан загрузочный диск этой виртуальной машины. | +| interfaces | []Struct [см. ниже](#описание-структуры-interfaces) | Информация о интерфейсах компьюта | +| lock_status | string | Статус доступности | +| manager_id | int | Manager id | +| manager_type | string | Type manager | +| migrationjob | int | Migrationjob | +| milestones | int | Вехи | +| name | string | Имя компьюта | +| need_reboot | bool | Флаг перезапуска | +| os_users | []Struct [см. ниже](#описание-структуры-os-users) | Имена и пароли пользователей гостевой ОС, установленные платформой при создании виртуального сервера. | +| pinned | bool | добавлен ли компьют на стек | +| ram | int | Объём оперативной памяти в МБ, выделенной этой виртуальной машине. | +| reference_id | string | ID ссылки | +| registered | bool | Компьют зарегестрирован | +| res_name | string | Наименование ресурса | +| rg_id | int | Идентификатор ресурсной группы, к которой принадлежит виртуальная машина. | +| rg_name | string | Имя ресурсной группы, к которой принадлежит виртуальная машина. | +| snap_sets | []Struct [см. ниже](#описание-структуры-snap-sets) | Snap sets | +| stack_id | int | id стэка | +| stack_name | string | Название стэка | +| stateless_sep_id | int | ID сеп | +| stateless_sep_type | string | Тип сеп | +| status | string | Статус компьюта | +| tags | []Struct [см. ниже](#описание-структуры-tags) | Тэги | +| tech_status | string | Технический статус компьюта в составе группы | +| updated_by | string | Кем компьют был обновлен | +| updated_time | int | Время последнего обновления | +| user_managed | bool | Флаг, показывает управление пользователем вычислительной мощностью | +| vgpus | []int | Список vgpu | +| virtual_image_id | int | ID виртуального образа | +| boot_disk_id | int | Идентификатор загрузочного диска виртуальной машины. | +| boot_disk_size | int | Размер загрузочного диска в ГБ. | +| sep_id | int | ID sep | +| pool | string | Pool | +| extra_disks | []int | Список идентификаторов дополнительных дисков, которые подключены к данной виртуальной машине помимо загрузочного диска. Если такие диски отсутствуют, то список будет пустым. | +| network | []Struct [см. ниже](#описание-структуры-network) | Характеристики сетевых сегментов, к которым подключен данный сервер. | + +### Описание структуры network +| Параметр | Тип | Описание | +| --- | --- | --- | +| net_id | int | ID сети | +| net_type | string | Тип сети | +| ip_address | string | IP адрес | +| mac | string | MAC адрес | + +### Описание структуры os users +| Параметр | Тип | Описание | +| --- | --- | --- | +| guid | string | GUID | +| login | string | Логин | +| password | string | Пароль | +| public_key | string | Публичный ssh ключ | + +### Описание структуры tags +| Параметр | Тип | Описание | +| --- | --- | --- | +| key | string | Ключ тэга | +| val | string | Значение тэга | + +### Описание структуры snap sets +| Параметр | Тип | Описание | +| --- | --- | --- | +| disks | []int | Список id дисков | +| guid | string | GUID | +| label | string | Лейбл | +| timestamp | int | Время | + +### Описание структуры interfaces +| Параметр | Тип | Описание | +| --- | --- | --- | +| conn_id | int | ID connect | +| conn_type | string | Тип connect | +| def_gw | string | Шлюз по умолчанию | +| flip_group_id | int | id flip group | +| guid | string | GUID | +| ip_address | string | IP адрес | +| listen_ssh | bool | открыт ли ssh connect | +| mac | string | MAC адрес устройства | +| name | string | Имя | +| net_id | int | ID сети | +| netmask | int | Маска сети | +| net_type | string | Тип сети | +| pci_slot | int | Pci Slot | +| qos | []Struct{}[см. ниже](#описание-структуры-qos)| QOS | +| target | string | Цель сети | +| type | string | Тип | +| vnfs | []int | VNFS | + +### Описание структуры qos +| Параметр | Тип | Описание | +| --- | --- | --- | +| e_rate | int | E rate | +| guid | string | ID ресурса | +| in_brust | int | In brust | +| in_rate | int | In rate | + +### Описание структуры acl +| Параметр | Тип | Описание | +| --- | --- | --- | +| explicit | bool | Явно ли указан доступ | +| guid | string | guid Ресурса | +| right | string | Права на ресурс | +| status | string | Статус ресурса | +| type | string | Тип ресурса | +| user_group_id | string | ID user group | + +### Описание структуры affinity rules +| Параметр | Тип | Описание | +| --- | --- | --- | +| guid | string | guid | +| key | string | Ключ | +| mode | string | Режим сравнения | +| policy | string | Степень "строгости" этого правила | +| topology | string | Топология | +| value | string | Значение | + +### Описание структуры disks +| Параметр | Тип | Описание | +| --- | --- | --- | +| pool | string | Имя пула в системе хранения, на ресурсах которой размещён данный диск | +| sep_id | int | Идентификатор Storage Endpoint Provider (SEP). SEP это способ идентифицировать конкретную систему хранения, на ресурсах которой размещён данный диск | +| size | int | Размер диска в ГБ | +| disk_type | string | Тип диска с точки зрения его роли в составе _compute_. Может принимать одно из фиксированных значений:
"B" - признак загрузочного диска ("boot").
"D" - признак дополнительного диска ("data") | +| disk_name | string | Наименование диска | +| desc | string | Описание | +| image_id | int | ID образа | +| disk_id | int | ID диска | +| shareable | bool | Флаг, отвечающий за доступность диска дургим ресурсам | +| size_max | int | Максимальный размер диска | +| size_used | int | Кол-во используемого места, в ГБ | + +### Описание структуры snapshots +| Параметр | Тип | Описание | +| --- | --- | --- | +| guid | string | id снимка | +| label | string | Наименование снимка | +| res_id | string | Ссылка на снимок | +| snap_set_guid | string | Установленный id снимка | +| snap_set_time | int | Установленное время снимка | +| timestamp | int | Время снимка | + +## Пример использования +В нижеприведённом примере с помощью _resource_ функции **decort_cb_kvmvm** создаётся виртуальная машина (экземпляр _compute_ в терминологии платформы DECORT) следующими характеристиками: +* Имя виртуальной машины - "tf-managed-vm" +* Характеристики виртуальной машины - 1 CPU, 1024Мб RAM, размер загрузочного диска 10Гб +* К виртуальной машине будет подключён один дополнительный диск с идентификатором 56789 +* Идентификатор ресурсной группы, в которой создаётся виртуальная машина - поступает из переменной _decort_cb_rg.my_rg.id_ +* Идентификатор образа ОС, который будет установлен на загрузочный диск - поступает из переменной _data.decort_cb_image.os_image.id_ +* Виртуальная машина будет иметь одно сетевое подключение - во внешнюю сеть с идентификатором 12, IP адрес этого подключения платформа установит автоматически + +```terraform +resource "decort_cb_kvmvm" "my_new_vm" { + name = "tf-managed-vm" + rg_id = decort_resgroup.my_rg.id + driver = "KVM_X86" # "KVM_PPC" for IBM Power or "KVM_X86" for Intel + cpu = 1 # CPU count + ram = 1024 # RAM size in MB, must be even number, ideally a power of 2 + image_id = data.decort_cb_image.os_image.id + + boot_disk_size = 10 # Boot disk size in GB + #sep_id = 1 #ID сепа для boot диска + #pool = "data02" #Название пула + #cloud_init = file("initconfig.tftpl") #конфигурация cloud init + #description = "Test KVM VM Compute managed by Terraform" + #stack_id = 1 + +/* + #Создание и добавление диска для compute + disks { + disk_name = "disk_name" + size = 5 + + #disk_type = "D" + #sep_id = 1 + #pool = "data01" + #desc = "" + #image_id = 378 + #permanently = false + } +*/ + +/* + #правила affinity + affinity_rules { + topology = "compute" + policy = "RECOMMENDED" + mode = "ANY" #возможные значения - ANY, EQ, NE + key = "testkey" + value = "testvalue" + } +*/ + +/* + #правила anti-affinity + anti_affinity_rules { + topology = "compute" + policy = "RECOMMENDED" + mode = "ANY" #возможные значения - ANY, EQ, NE + key = "testkey" + value = "testvalue" + } +*/ + + #affinity_label = "test4" + #is="" + #ipa_type = "" + extra_disks = [ 56789 ] + + + #Присоеденения сетей и удаление сетей в компьюте + network { + net_type = "EXTNET" + net_id = 12 + #ip_address = "127.0.0.1" + } + + +/* + #добавление и удаление тэгов + tags { + key = "key" + value = "value" + } +*/ + +/* + #добавление и удаление port forwarding + port_forwarding { + public_port_start = 2023 + local_port = 80 + proto = "tcp" + + #public_port_end = 2023 + } +*/ + +/* + #предоставить/забрать пользователю доступ к компьюту + user_access { + username = "some@decs3o" + access_type = "ARCXDU" + } +*/ + +/* + #Создать/удалить снапшот компьюта + snapshot { + label = "label1" + } +*/ + +/* + #Rollback на нужный снапшот + rollback { + label = "label1" + } +*/ + +/* + #Вставить/удалить СD rom + cd { + cdrom_id = 344 + } +*/ + + #pin_to_stack = true + #target_stack_id = 1 + #force_pin = true + + #enabled = true + #pause = true + #reset = true + #restore = true + #auto_start = true + #force_stop = true + #alt_boot_id = 1 + #custom_fields = "dict" + + #data_disks = "KEEP" + #started = true + #detach_disks = true + #permanently = false + + #reason = "test" +} +``` + +Данный пример подразумевает, что ранее по тексту tf-файла : +* выполнена корректная инициализация провайдера (подробнее об инициализации Terraform провайдера DECORT см. соответствующий [раздел](https://repository.basistech.ru/BASIS/terraform-provider-decort/wiki/04.02-Инициализация-Terraform-провайдера-DECORT)). +* создан ресурс типа decort_resgroup (см. _resource_ функцию [decort_resgroup](https://repository.basistech.ru/BASIS/terraform-provider-decort/wiki/07.01.02-Resource-функция-decort_resgroup-управление-ресурсными-группами)) и результат записан в переменную _decort_resgroup.my_rg_ +* считана информация об образе ОС(см. _data_ функцию [decort_image](https://repository.basistech.ru/BASIS/terraform-provider-decort/wiki/06.01.07-Data-функция-decort_image-получение-информации-об-образе)) и результат записан в переменную _decort_resgroup.os_image_ + +После успешного завершения такого вызова _resource_ функции **decort_cb_kvmvm** в переменной `decort_cb_kvmvm.my_new_vm` будут сохранены возвращаемые значения. В частности, для получения идентификатора виртуальной машины следует использовать конструкцию `decort_cb_kvmvm.my_new_vm.id`. diff --git a/07.02.11-Resource-функция-decort_kvmvm-управление-виртуальными-машинами-на-базе-KVM.md b/07.02.11-Resource-функция-decort_kvmvm-управление-виртуальными-машинами-на-базе-KVM.md deleted file mode 100644 index 116c13a..0000000 --- a/07.02.11-Resource-функция-decort_kvmvm-управление-виртуальными-машинами-на-базе-KVM.md +++ /dev/null @@ -1,81 +0,0 @@ -_Resource_ функция **decort_kvmvm** служит для управления виртуальными машинами, создаваемыми в платформе DECORT на базе технологии виртуализации KVM. - -## Аргументы -_Resource_ функция **decort_kvmvm** принимает следующие аргументы: - -| Аргумент | Тип | Обязательный | Описание | -| --- | --- | --- | --- | -| driver | string | :heavy_check_mark: | Аппаратная архитектура виртуальной машины.
Может принимать одно из следующих значений:
* "KVM_X86" - виртуальная машина KVM на аппаратной платформе x86.
* "KVM_PPC" - виртуальная машина KVM на аппаратной платформе IBM Power. | -| cpu | int | :heavy_check_mark: | Количество процессоров. | -| name | string | :heavy_check_mark: | Имя виртуальной машины. Обратите внимание, что имя должно быть уникальным в рамках ресурсной группы. | -| rg_id | int | :heavy_check_mark: | Идентификатор ресурсной группы, которой принадлежит данная виртуальная машина. | -| ram | int | :heavy_check_mark: | Объём оперативной памяти в МБ.
| -| image_id | int | :heavy_check_mark: | Идентификатор образа, на базе которого создаётся загрузочный диск виртуальной машины.
| -| boot_disk_size | int | :heavy_check_mark: | Размер загрузочного диска виртуальной машины в ГБ. | -| extra_disks | []int | :x: | Список идентификаторов дополнительных дисков, которые требуется подключить к данной виртуальной машине помимо загрузочного диска. | -| cloud_init | string | :x: | Используется на этапе создания вм.
Параметры для утилиты _cloud_init_, которая используется в платформе DECORT для первичного конфигурирования виртуальной машины после её создания. | -| network | dict | :x: | Параметры сетевого подключения. Структура словаря:
* (string) `net_type` - тип сети, соответствующей данному подключению. "EXTNET" в случае прямого подключения во внешнюю сеть, "VINS" в случае подключения к Virtual Network Segment.
* (int) `net_id` - идентификатор соответствующего сетевого сегмента: внешней сети в случае `net_type = "EXTNET"` и ViNS в случае `net_type = "VINS"`
* (string) `ip_address` - IP адрес, выделенный данному подключению.
* (string) `mac` - MAC адрес, назначенный соответствующему сетевому интерфейсу виртуальной машины.
Если нужно сконфигурировать несколько сетевых подключений, данный блок можно задавать многократно - по одному на каждое подключение. | -| description | string | :x: | Текстовое описание виртуальной машины. | -| started | bool | :x: | Флаг запуска машины,
по-умолчанию - true.
Если true - машина включена,
если false - выключена. | - -## Возвращаемые значения -В случае успешного выполнения _resource_ функция **decort_kvmvm** возвращает в указанную при вызове переменную следующие значения: - -| Параметр | Тип | Описание | -| --- | --- | --- | -| account_id | int | Уникальный идентификатор подписчика-владельца ("account") данной виртуальной машины. | -| account_name | string | Имя подписчика, которому принадлежит данная виртуальная машина. | -| driver | string | Аппаратная архитектура данной виртуальной машины. | -| boot_disk_id | int | Идентификатор загрузочного диска виртуальной машины. | -| boot_disk_size | int | Размер загрузочного диска в ГБ. | -| compute_id | int | Идентификатор экземпляра _compute_, соответствующего данной виртуальной машине. | -| cpu | int | Количество виртуальных CPU, выделенных данному серверу. | -| description | string | Текстовое описание виртуальной машины. | -| extra_disks | list of ints | Список идентификаторов дополнительных дисков, которые подключены к данной виртуальной машине помимо загрузочного диска. Если такие диски отсутствуют, то список будет пустым. | -| id | int | Уникальный идентификатор этой виртуальной машины в облачной платформе. Всегда совпадает с `compute_id`. | -| image_id | int | Идентификатор образа ОС, на базе которого создан загрузочный диск этой виртуальной машины. | -| image_name | string | Имя образа ОС, на базе которого создан загрузочный диск этой виртуальной машины. | -| name | string | Имя виртуального сервера.
Возвращаемое значение `name` совпадает со значением соответствующего аргумента, переданного при вызове функции. | -| network | list of dicts | Характеристики сетевых сегментов, к которым подключен данный сервер. Формат структуры:
* (string) `net_type` - тип сети, соответствующей данному подключению. "EXTNET" в случае прямого подключения во внешнюю сеть, "VINS" в случае подключения к Virtual Network Segment.
* (int) `net_id` - идентификатор соответствующего сетевого сегмента: внешней сети в случае `net_type = "EXTNET"` и ViNS в случае `net_type = "VINS"`
* (string) `ip_address` - IP адрес, выделенный данному подключению.
* (string) `mac` - MAC адрес, назначенный соответствующему сетевому интерфейсу виртуальной машины. | -| os_users | list of dicts | Имена и пароли пользователей гостевой ОС, установленные платформой при создании виртуального сервера. Формат структуры:
* (string) `login` - учётная запись в гостевой ОС.
* (string) `password` - пароль к этой учётной записи. | -| ram | int | Объём оперативной памяти в МБ, выделенной этой виртуальной машине. | -| rg_id | int| Идентификатор ресурсной группы, к которой принадлежит виртуальная машина. | -| rg_name | string | Имя ресурсной группы, к которой принадлежит виртуальная машина. | -| started | bool | Опциональный параметр, флаг запуска машины,
по-умолчанию - true.
Если true - машина включена,
если false - выключена. | - -## Пример использования -В нижеприведённом примере с помощью _resource_ функции **decort_kvmvm** создаётся виртуальная машина (экземпляр _compute_ в терминологии платформы DECORT) следующими характеристиками: -* Имя виртуальной машины - "tf-managed-vm" -* Характеристики виртуальной машины - 1 CPU, 1024Мб RAM, размер загрузочного диска 10Гб -* К виртуальной машине будет подключён один дополнительный диск с идентификатором 56789 -* Идентификатор ресурсной группы, в которой создаётся виртуальная машина - поступает из переменной _decort_resgroup.my_rg.id_ -* Идентификатор образа ОС, который будет установлен на загрузочный диск - поступает из переменной _data.decort_image.os_image.id_ -* Виртуальная машина будет иметь одно сетевое подключение - во внешнюю сеть с идентификатором 12, IP адрес этого подключения платформа установит автоматически - -```terraform -resource "decort_kvmvm" "my_new_vm" { - name = "tf-managed-vm" - rg_id = decort_resgroup.my_rg.id - driver = "KVM_X86" # "KVM_PPC" for IBM Power or "KVM_X86" for Intel - cpu = 1 # CPU count - ram = 1024 # RAM size in MB, must be even number, ideally a power of 2 - boot_disk_size = 10 # Boot disk size in GB - extra_disks = [ 56789 ] - image_id = data.decort_image.os_image.id - description = "Test KVM VM Compute managed by Terraform" - - network { - net_type = "EXTNET" - net_id = 12 - } - - #started = true -} -``` - -Данный пример подразумевает, что ранее по тексту tf-файла : -* выполнена корректная инициализация провайдера (подробнее об инициализации Terraform провайдера DECORT см. соответствующий [раздел](https://repository.basistech.ru/BASIS/terraform-provider-decort/wiki/04.02-Инициализация-Terraform-провайдера-DECORT)). -* создан ресурс типа decort_resgroup (см. _resource_ функцию [decort_resgroup](https://repository.basistech.ru/BASIS/terraform-provider-decort/wiki/07.01.02-Resource-функция-decort_resgroup-управление-ресурсными-группами)) и результат записан в переменную _decort_resgroup.my_rg_ -* считана информация об образе ОС(см. _data_ функцию [decort_image](https://repository.basistech.ru/BASIS/terraform-provider-decort/wiki/06.01.07-Data-функция-decort_image-получение-информации-об-образе)) и результат записан в переменную _decort_resgroup.os_image_ - -После успешного завершения такого вызова _resource_ функции **decort_kvmvm** в переменной `decort_kvmvm.my_new_vm` будут сохранены возвращаемые значения. В частности, для получения идентификатора виртуальной машины следует использовать конструкцию `decort_kvmvm.my_new_vm.id`. diff --git a/Home.md b/Home.md index f34094e..af18731 100644 --- a/Home.md +++ b/Home.md @@ -240,7 +240,7 @@ Terraform провайдер для платформы DECORT с API верси - [**decort_flipgroup**](https://repository.basistech.ru/BASIS/terraform-provider-decort/wiki/07.01.20-Resource-функция-decort_flipgroup-управление-плавающей-группой) - управление плавающей группой