update kvmvm resource

master
loskutovanl 1 year ago
parent 27674b5f6e
commit 3677cc917c

@ -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: | Аппаратная архитектура виртуальной машины.<br/>Может принимать одно из следующих значений:<br/> * "KVM_X86" - виртуальная машина KVM на аппаратной платформе x86.<br/> * "KVM_PPC" - виртуальная машина KVM на аппаратной платформе IBM Power. |
| cpu | int | :heavy_check_mark: | Количество процессоров. |
| ram | int | :heavy_check_mark: | Объём оперативной памяти в МБ.<br/> |
| image_id | int | :heavy_check_mark: | Идентификатор образа, на базе которого создаётся загрузочный диск виртуальной машины.<br/> |
| boot_disk_size | int | :x: | Размер загрузочного диска виртуальной машины в ГБ. |
| sep_id | int | :x: | ID SEP для создания загрузочного диска. Если не задан, будет использоваться sepId образа. Значение по умолчанию 0. |
|pool| string | :x: | Пул (если установлен sepId). Если значение не задано, то пул будет выбран системой. |
| cloud_init | string | :x: | Используется на этапе создания вм.<br/>Параметры для утилиты _cloud_init_, которая используется в платформе DECORT для первичного конфигурирования виртуальной машины после её создания. |
| description | string | :x: | Текстовое описание виртуальной машины. |
| started | bool | :x: | Флаг запуска машины,<br/>по-умолчанию - true.<br/>Если true - машина включена,<br/>если 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: | Параметры сетевого подключения.<br/>Если нужно сконфигурировать несколько сетевых подключений, данный блок можно задавать многократно - по одному на каждое подключение. |
| 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_. Может принимать одно из фиксированных значений:<br/>"B" - признак загрузочного диска ("boot").<br/>"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`.

@ -1,81 +0,0 @@
_Resource_ функция **decort_kvmvm** служит для управления виртуальными машинами, создаваемыми в платформе DECORT на базе технологии виртуализации KVM.
## Аргументы
_Resource_ функция **decort_kvmvm** принимает следующие аргументы:
| Аргумент | Тип | Обязательный | Описание |
| --- | --- | --- | --- |
| driver | string | :heavy_check_mark: | Аппаратная архитектура виртуальной машины.<br/>Может принимать одно из следующих значений:<br/> * "KVM_X86" - виртуальная машина KVM на аппаратной платформе x86.<br/> * "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: | Объём оперативной памяти в МБ.<br/> |
| image_id | int | :heavy_check_mark: | Идентификатор образа, на базе которого создаётся загрузочный диск виртуальной машины.<br/> |
| boot_disk_size | int | :heavy_check_mark: | Размер загрузочного диска виртуальной машины в ГБ. |
| extra_disks | []int | :x: | Список идентификаторов дополнительных дисков, которые требуется подключить к данной виртуальной машине помимо загрузочного диска. |
| cloud_init | string | :x: | Используется на этапе создания вм.<br/>Параметры для утилиты _cloud_init_, которая используется в платформе DECORT для первичного конфигурирования виртуальной машины после её создания. |
| network | dict | :x: | Параметры сетевого подключения. Структура словаря:<br/> * (string) `net_type` - тип сети, соответствующей данному подключению. "EXTNET" в случае прямого подключения во внешнюю сеть, "VINS" в случае подключения к Virtual Network Segment.<br/>* (int) `net_id` - идентификатор соответствующего сетевого сегмента: внешней сети в случае `net_type = "EXTNET"` и ViNS в случае `net_type = "VINS"`<br/>* (string) `ip_address` - IP адрес, выделенный данному подключению.<br/>* (string) `mac` - MAC адрес, назначенный соответствующему сетевому интерфейсу виртуальной машины.<br/>Если нужно сконфигурировать несколько сетевых подключений, данный блок можно задавать многократно - по одному на каждое подключение. |
| description | string | :x: | Текстовое описание виртуальной машины. |
| started | bool | :x: | Флаг запуска машины,<br/>по-умолчанию - true.<br/>Если true - машина включена,<br/>если 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 | Имя виртуального сервера.<br>Возвращаемое значение `name` совпадает со значением соответствующего аргумента, переданного при вызове функции. |
| network | list of dicts | Характеристики сетевых сегментов, к которым подключен данный сервер. Формат структуры:<br/>* (string) `net_type` - тип сети, соответствующей данному подключению. "EXTNET" в случае прямого подключения во внешнюю сеть, "VINS" в случае подключения к Virtual Network Segment.<br/>* (int) `net_id` - идентификатор соответствующего сетевого сегмента: внешней сети в случае `net_type = "EXTNET"` и ViNS в случае `net_type = "VINS"`<br/>* (string) `ip_address` - IP адрес, выделенный данному подключению.<br/>* (string) `mac` - MAC адрес, назначенный соответствующему сетевому интерфейсу виртуальной машины. |
| os_users | list of dicts | Имена и пароли пользователей гостевой ОС, установленные платформой при создании виртуального сервера. Формат структуры:<br/>* (string) `login` - учётная запись в гостевой ОС.<br/>* (string) `password` - пароль к этой учётной записи. |
| ram | int | Объём оперативной памяти в МБ, выделенной этой виртуальной машине. |
| rg_id | int| Идентификатор ресурсной группы, к которой принадлежит виртуальная машина. |
| rg_name | string | Имя ресурсной группы, к которой принадлежит виртуальная машина. |
| started | bool | Опциональный параметр, флаг запуска машины,<br/>по-умолчанию - true.<br/>Если true - машина включена,<br/>если 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`.

@ -240,7 +240,7 @@ Terraform провайдер для платформы DECORT с API верси
- [**decort_flipgroup**](https://repository.basistech.ru/BASIS/terraform-provider-decort/wiki/07.01.20-Resource-функция-decort_flipgroup-управление-плавающей-группой) - управление плавающей группой
<!-- - [Административная группа API](https://repository.basistech.ru/BASIS/terraform-provider-decort/wiki/07.02-Административная-группа-API)
- [**decort_kvmvm**](https://repository.basistech.ru/BASIS/terraform-provider-decort/wiki/07.02.11-Resource-функция-decort_kvmvm-управление-виртуальными-машинами-на-базе-KVM) - управление виртуальными серверами, создаваемыми на базе системы виртуализации KVM
- [**decort_cb_kvmvm**](https://repository.basistech.ru/BASIS/terraform-provider-decort/wiki/07.02.11-Resource-функция-decort_cb_kvmvm-управление-виртуальными-машинами-на-базе-KVM) - управление виртуальными серверами, создаваемыми на базе системы виртуализации KVM
- [**decort_cb_rg**](https://repository.basistech.ru/BASIS/terraform-provider-decort/wiki/07.02.14-Resource-функция-decort_cb_rg-управление-ресурсными-группами) - управление ресурсными группами
- [**decort_cb_extnet**](https://repository.basistech.ru/BASIS/terraform-provider-decort/wiki/07.02.15-Resource-функция-decort_cb_extnet-управление-внешними-сетями) - управление внешними сетями
- [**decort_cb_disk**](https://repository.basistech.ru/BASIS/terraform-provider-decort/wiki/07.02.13-Resource-функция-decort_cb_disk-управление-дисковыми-ресурсами) - управление дисковыми ресурсами.

Loading…
Cancel
Save