You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1055 lines
50 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# Модуль decort_kvmvm
## Обзор модуля decort_kvmvm
Модуль **decort_kvmvm** предназначен для выполнения следующих действий над виртуальными машинами:
- **создать** (см. [примеры](#создать))
- **с указанием описания** (см. параметр **description** и [примеры](#с-указанием-описания))
- **с указанием объёма загрузочного диска** (см. параметр **boot.disk_size** и [примеры](#с-указанием-объёма-загрузочного-диска))
- **с указанием СХД** (см. параметры **sep_id** и **pool** и [примеры](#с-указанием-схд))
- **с указанием Cloud-init user data** (см. параметр **ci_user_data** и [примеры](#с-указанием-cloud-init-user-data))
- **с указанием SSH-ключа** (см. параметры **ssh_key** и **ssh_key_user** и [примеры](#с-указанием-ssh-ключа))
- **с указанием NUMA Affinity** (см. параметр **numa_affinity** и [примеры](#с-указанием-numa-affinity))
- **с указанием запуска на выделенных ядрах ЦП** (см. параметр **cpu_pin** и [примеры](#с-указанием-запуска-на-выделенных-ядрах-цп))
- **с использованием Huge Pages** (см. параметр **hp_backed** и [примеры](#с-использованием-huge-pages))
- **с указанием custom_fields** (см. параметр **custom_fields** и [примеры](#с-указанием-custom_fields))
- **с указанием affinity-метки** (см. параметр **affinity_label** и [примеры](#с-указанием-affinity-метки))
- **с указанием affinity правил** (см. параметр **aff_rule** и [примеры](#с-указанием-affinity-правил))
- **с указанием anti-affinity правил** (см. параметр **aaff_rule** и [примеры](#с-указанием-anti-affinity-правил))
- **с указанием тэгов** (см. параметр **tag** и [примеры](#с-указанием-тэгов))
- **с образом** (см. параметры **image_id** и **image_name** и [примеры](#с-образом))
- **без образа** (см. параметры **image_id** и **image_name** и [примеры](#без-образа))
- **с загрузочным диском** (см. параметр **boot.disk_size** и [примеры](#с-загрузочным-диском))
- **без загрузочного диска** (см. [примеры](#без-загрузочного-диска))
- **с включением автоматического запуска ВМ после перезапуска вычислительного узла, за которым она закреплена** (см. параметр **auto_start** и [примеры](#с-включением-автоматического-запуска-вм-после-перезапуска-вычислительного-узла-за-которым-она-закреплена))
- **с указанием чипсета** (см. параметр **chipset** и [примеры](#с-указанием-чипсета))
- **с указанием предпочтительных ядер** (см. параметр **preferred_cpu_cores** и [примеры](#с-указанием-предпочтительных-ядер))
- **путём клонирования другой ВМ** (см. параметр **clone_from** и [примеры](#путём-клонирования-другой-вм))
- **получить основную информацию** (см. [возвращаемые значения](#основная-информация) и [примеры](#получение-основной-информации-о-виртуальной-машине))
- **получить ссылку на консоль** (см. параметр **get_console_url** и [примеры](#получение-ссылки-на-консоль))
- **остановить/приостановить/запустить** (см. параметр **state** и [примеры](#остановитьприостановитьзапустить))
- **подключить/отключить диски** (см. параметр **disks** и [примеры](#подключитьотключить-диски))
- **подключить/отключить сети** (см. параметры **networks** и **network_order_changing** и [примеры](#подключитьотключить-сети))
- **откатить ВМ к состоянию снимка** (см. параметры **rollback_to** и [примеры](#откатить-вм-к-состоянию-снимка))
- **изменить** (см. [примеры](#изменить))
- **объём загрузочного диска в большую сторону** (см. параметр **boot.disk_size** и [примеры](#объём-загрузочного-диска-в-большую-сторону))
- **количество ЦП** (см. параметр **cpu** и [примеры](#количество-цп))
- **объём ОЗУ** (см. параметр **ram** и [примеры](#объём-озу))
- **тэги** (см. параметр **tag** и [примеры](#тэги))
- **affinity метку** (см. параметр **affinity_label** и [примеры](#affinity-метку))
- **affinity правила** (см. параметр **aff_rule** и [примеры](#affinity-правила))
- **anti-affinity правила** (см. параметр **aaff_rule** и [примеры](#anti-affinity-правила))
- **описание** (см. параметр **description** и [примеры](#описание))
- **чипсет** (см. параметр **chipset** и [примеры](#чипсет))
- **правило NUMA Affinity** (см. параметр **numa_affinity** и [примеры](#правило-numa-affinity))
- **запуск на выделенных ядрах ЦП** (см. параметр **cpu_pin** и [примеры](#запуск-на-выделенных-ядрах-цп))
- **использование Huge Pages** (см. параметр **hp_backed** и [примеры](#использование-huge-pages))
- **имя** (см. параметр **name** и [примеры](#имя))
- **XML виртуальной машины** (см. параметр **custom_fields** и [примеры](#xml-виртуальной-машины))
- **автоматический запуск ВМ после перезапуска вычислительного узла, за которым она закреплена** (см. параметр **auto_start** и [примеры](#автоматический-запуск-вм-после-перезапуска-вычислительного-узла-за-которым-она-закреплена))
- **предпочтительные ядра** (см. параметр **preferred_cpu_cores** и [примеры](#предпочтительные-ядра))
- **загрузочный диск** (см. параметр **boot.disk_id** и [примеры](#загрузочный-диск))
- **удалить (безвозвратно)** (см. параметр **state** и [примеры](#безвозвратно))
## Параметры модуля decort_kvmvm
Ниже приведен список параметров для модуля **decort_kvmvm** (за исключением [общих параметров авторизации](./введение.md#общие-параметры-модулей-для-авторизации)):
| Параметр | Тип, допустимые значения | Описание |
| ------ | ------ | ------ |
| aaff_rule | (list) | Список словарей, описывающих anti-affinity правила.<br>Ключи словаря:<br>&bull; `topology` (string) (обязательный) - назначение правила; значения: `node` (узел) или `compute` (ВМ)<br>&bull; `policy` (string) (обязательный) - степень "необходимости" этого правила; значения: `RECOMMENDED` или `REQUIRED`<br>&bull; `mode` (string) (обязательный) - режим сравнения; значения: `EQ` (должно соответствовать), `NE` (не должно соответствовать), `ANY` (любое)<br>&bull; `key` (string) (обязательный) - ключ, который учитывается при анализе данного правила<br>&bull; `value` (string) (обязательный) - значение ключа, учитываемого при анализе данного правила (зависит от ключа `mode`).<br>Чтобы очистить anti-affinity правила, нужно указать пустой список `[]`. |
| account_id | (int) | Идентификатор аккаунта. Этот параметр является опциональным и используется в сценариях, когда уже существующая ресурсная группа задается комбинацией `account_id` и `rg_name`. Если задан `account_id`, то `account_name` игнорируется.|
| account_name | (string) | Имя аккаунта. Этот параметр является опциональным и используется в сценариях, когда уже существующая ресурсная группа задается комбинацией `account_name` и `rg_name`. Если задан `account_id`, то `account_name` игнорируется. |
| aff_rule | (list) | Список словарей, описывающих affinity правила.<br>Ключи словаря:<br>&bull; `topology` (string) (обязательный) - назначение правила; значения: `node` (узел) или `compute` (ВМ)<br>&bull; `policy` (string) (обязательный) - степень "необходимости" этого правила; значения: `RECOMMENDED` или `REQUIRED`<br>&bull; `mode` (string) (обязательный) - режим сравнения; значения: `EQ` (должно соответствовать), `NE` (не должно соответствовать), `ANY` (любое)<br>&bull; `key` (string) (обязательный) - ключ, который учитывается при анализе данного правила<br>&bull; `value` (string) (обязательный) - значение ключа, учитываемого при анализе данного правила (зависит от ключа `mode`).<br>Чтобы очистить affinity правила, нужно указать пустой список `[]`. |
| affinity_label | (str) | Метка affinity.<br>Чтобы очистить метку affinity, нужно указать пустую строку `""`. |
| auto_start | (bool) | Включить/выключить автоматический запуск ВМ после перезапуска вычислительного узла, за которым она закреплена.<br> Если параметр не задан при создании ВМ, то значение будет выбрано платформой. |
| boot | (dict) | Параметры загрузки.<br>Ключи словаря:<br>&bull; `disk_id` (int) - идентификатор диска, который будет установлен как загрузочный;<br>&bull; `disk_size` (int) - объём загрузочного диска виртуальной машины в ГБ. Если параметр не задан, размер будет равен размеру образа. Если не заданы этот параметр и параметры `image_id` и `image_name`, то виртуальная машина будет создана без загрузочного диска. |
| chipset | (string)<br>Значения:<br>`Q35`<br>`i440fx` | Эмулируемый чипсет. Значение по умолчанию при создании: `i440fx`.|
| ci_user_data | (dict) | конфигурация для cloud-init
| clone_from | (dict) | Словарь параметров для создания ВМ путём клонирования другой ВМ.<br>Ключи словаря:<br>&bull; `id` (int) (обязательный) - идентификатор клонируемой ВМ<br>&bull; `force` (bool) - игнорировать, что ВМ запущена; значение по умолчанию: `false`<br>&bull; `snapshot` (dict) - словарь параметров клонируемого снимка ВМ. Ключи словаря: `name` (str) - название снимка; `timestamp` (int) - unix-время; `datetime` (str) - дата и время в формате `ггггммддччммсс`, альтернатива параметру `timestamp`, допустимо использовать любой разделитель между группами цифр для повышения читаемости, например, `гггг-мм-дд чч:мм:сс`.<br>Для создания клона также должен быть указан параметр `name` для указания имени клона.|
| cpu | (int) | Количество виртуальных процессоров, выделяемых виртуальной машине. |
| cpu_pin | (bool) | Запуск виртуальной машины на выделенных ядрах ЦП. <br>Значение по умолчанию при создании: `false`. |
| custom_fields | (dict) | Словарь, управляющий XML виртуальной машины.<br>Ключи словаря:<br>&bull; `disable` (bool) - отключение управления виртуальной машиной через XML. Значение по умолчанию при создании: `true`<br>&bull; `fields` (dict) - поля для управления XML виртуальной машины. |
| description | (string) | Опциональное описание виртуальной машины. |
| disks | (dict) | Словарь, описывающий диски ВМ.<br>Ключи словаря:<br>&bull;`mode` (str) - режим работы параметра; значения: `update` (по умолчанию) - указанные диски подключены, `detach` - указанные диски отключены, `delete` - указанные диски отключены и удалены; удаляются только отключаемые диски, `match` - подключены только указанные диски<br>&bull;`ids` (list) - список идентификаторов дисков; для отключения всех дисков нужно передать пустой список в режиме match. |
| get_console_url | (bool)<br>Default:<br>`false` | Получить ссылку на консоль ВМ. |
| hp_backed | (bool) | Использовать Huge Pages для выделения оперативной памяти виртуальной машины. Система должна быть предварительно сконфигурирована путем выделения Huge Pages на физическом узле. <br>Значение по умолчанию при создании: `false`. |
| id | (int) | Уникальный цифровой идентификатор виртуальной машины. Этот параметр используется как один из методов идентификации существующей ВМ (альтернатива по комбинации `name`, `rg_name` и `account_name`). Если при вызове модуля **decort_kvmvm** существующая ВМ идентифицируется по `id`, то параметры `account_id`, `account_name`, `rg_id` и `rg_name` игнорируются. |
| image_id | (int) | Уникальный цифровой идентификатор образа, на базе которого следует создать виртуальную машину.<br>Если заданы оба параметра (`image_id` и `image_name`), то `image_name` игнорируется.<br>Если этот параметр и параметр `image_name` не заданы, то виртуальная машина будет создана без образа. |
| image_name | (string) | Название образа, на базе которого следует создать ВМ.<br>Если этот параметр и параметр `image_id` не заданы, то виртуальная машина будет создана без образа. |
| name | (string) | Имя ВМ. Чтобы модуль **decort_kvmvm** мог управлять сервером по его названию, также необходимо задать комбинацию `account_name` и `rg_name` или `rg_id`. Если для существующей ВМ указаны и `name`, и `id`, то параметр `name` используется для переименования. |
| network_order_changing | (bool)<br>Default:<br>`false` | Соблюдение очерёдности сетей при их изменении.<br>Если `true`, то сравнение списка уже подключённых к ВМ сетей со списком из параметра `networks` будет производится <u>с учётом очерёдности сетей</u> и, <u>при выявлении несоответствия, сначала будет произведено отключение всех сетей от ВМ</u>, а затем подключение сетей в соответствии с параметром `networks`.<br> Если `false`, то очерёдность при сравнении учитываться не будет. Соответственно, сети, которые имеются в списке параметра `networks` и уже подключены к ВМ, переподключаться не будут, что может кратно уменьшить время выполнения изменения сетей. |
| networks | (list) | Список словарей, описывающих сети ВМ.<br>Ключи словаря:<br>&bull; `type` (string) (обязательный) - тип сети; значения: `VINS` (внутренняя), `EXTNET` (внешняя), `VFNIC` (вирт. функция), `DPDK`, `EMPTY` (без подключения к сети)<br>&bull; `id` (int) (необязательный) - идентификатор внутренней/внешней/DPDK сети или пула вирт. функций<br>&bull; `ip_addr` (string) (необязательный) - IP-адрес, используемый для подключения к данной сети; применимо только для `VINS` и `EXTNET`<br>&bull; `mtu` (int) (необязательный) - MTU интерфейса; применимо только для `DPDK`.<br>ВМ не может одновременно быть подключена к сети DPDK и к сети другого типа.<br>Чтобы отключить все сети, нужно указать пустой список `[]`. |
| numa_affinity | (str)<br>Значения:<br>`strict`<br>`loose`<br>`none` | Правило применения NUMA affinity к виртуальной машине. <br>`strict` - строго с NUMA affinity, `loose` - использовать NUMA affinity, если возможно, `none` - отменить применение NUMA affinity. <br>Значение по умолчанию при создании: `none`. |
| pool | (str) | Пул СХД, заданной параметром `sep_id`. Если пул не задан, то он будет выбран платформой.
| preferred_cpu_cores | (list) | Список номеров предпочтительных выделенных ядер ЦП (см. параметр `cpu_pin`). Чтобы очистить список номеров предпочтительных выделенных ядер ЦП, нужно указать пустой список `[]`. |
| ram | (int) | Объем оперативной памяти в МБ, выделенной данной ВМ. Параметр является обязательным при создании. Если указать его для уже существующей ВМ, то будет выполнена попытка изменить объем выделенной памяти. |
| rg_id | (int) | Уникальный цифровой идентификатор уже существующей ресурсной группы, в которой будет создана новая или находится уже существующая ВМ. Данный параметр является одним из методов идентификации существующей РГ (альтернативой является задание комбинации `account_name` и `rg_name`).|
| rg_name | (string) | Имя уже существующей ресурсной группы, в которой будет создаа новая или находится уже существующая ВМ. Данный параметр является одним из методов идентификации существующей РГ, когда задается пара `account_name` и `rg_name` (альтернативой является задание `rg_id`). Если заданы и `rg_id`, и `rg_name`, то параметр `rg_name` игнорируется.|
| rollback_to | (string) | Имя снимка, к состоянию которого необходимо совершить откат ВМ. |
| sep_id | (int) | Идентификатор СХД для загрузочного диска ВМ. Если не задан, то будет использоваться СХД образа.
| ssh_key | (string) | Открытая часть SSH-ключа, который необходимо добавить на создаваемую ВМ для пользователя, заданного параметром `ssh_key_user`. Данный параметр применим только для ОС Linux, используется только при создании и игнорируется при других операциях. |
| ssh_key_user | (string) | Имя пользователя в гостевой ОС (только для Linux), для которого добавляется SSH-ключ, заданный параметром `ssh_key`. Данный параметр является обязательным, если задан `ssh_key`. Используется только при создании и игнорируется при других операциях. |
| state | (str)<br>Значения:<br>`present`<br>`absent`<br>`poweredon`<br>`poweredoff`<br>`halted`<br>`paused` | Целевое состояние ВМ.<br>`present` - виртуальная машина существует и не удалена. Если удалена в корзину, то будет восстановлена из корзины.<br>`absent` - виртуальная машина безвозвратно удалена. <br>`poweredon` - виртуальная машина запущена. Если остановлена, то будет запущена. Если удалена в корзину, то будет восстановлена из корзины.<br>`poweredoff` - виртуальная машина остановлена. Если запущена, то будет остановлена.<br>`halted` - аналогично `poweredoff`.<br>`paused` - виртуальная машина приостановлена.<br>Значение по умолчанию при создании: `present`. |
| tag | (dict) | Словарь, пары ключ-значение которого, описывают тэги для ВМ.<br>Чтобы очистить теги, нужно указать пустой словарь `{}`.|
## Возвращаемые значения модуля decort_kvmvm
Модуль **decort_kvmvm** возвращает информацию о виртуальной машине в виде словаря `facts` со следующими ключами:
### Основная информация
| Ключ | Тип данных | Описание |
| ------ | ------ | ------ |
| account_id | int | Идентификатор аккаунта. |
| arch | string | Архитектура ВМ. |
| auto_start | bool | Автоматический запуск ВМ после перезапуска вычислительного узла, за которым она закреплена. |
| clones | list | Список идентификаторов клонов ВМ. |
| clone_reference | int | Идентификатор ВМ, клоном которой является данная ВМ. |
| chipset | string | Эмулируемый чипсет. |
| cpu | int | Количество виртуальных процессоров. |
| cpu_pin | bool | Запуск виртуальной машины на выделенных ядрах ЦП. |
| custom_fields | dict | Словарь, управляющий XML виртуальной машины. Если `null`, то управление виртуальной машиной через XML отключено, иначе - управление через XML включено. |
| disks | list | Список идентификаторов дисков, подключенных к ВМ. |
| disk_size | int | Размер загрузочного диска в ГБ. |
| hp_backed | bool | Использовать Huge Pages для выделения оперативной памяти виртуальной машины. |
| id | int | Идентификатор ВМ. |
| image_id | id | Идентификатор образа.
| interfaces | list | Список словарей, описывающих сетевые интерфейсы ВМ, отсортированный по номеру слота PCI. |
| name | string | Имя ВМ. |
| numa_affinity | str | Правило применения NUMA affinity к виртуальной машине. |
| password | string | Пароль пользователя ОС по умолчанию. |
| preferred_cpu_cores | list | Список номеров предпочтительных выделенных ядер ЦП. |
| private_ips | list | Список IP-адресов на сетевых интерфейсах ВМ, которые подключены к внутренним сетям. |
| public_ips | list | Список IP адресов на сетевых интерфейсах ВМ, которые подключены к внешним сетям. |
| ram | int | Объём ОЗУ ВМ в МБ. |
| rg_id | int | Идентификатор ресурсной группы, которой принадлежит данная ВМ. |
| snapshots | list | Список словарей, описывающих снимки ВМ. |
| state | string | Состояние ВМ.|
| tags | dict | Словарь, пары ключ-значение которого, описывают тэги ВМ.
| tech_status | str | Технический статус ВМ.
| username | string | Имя пользователя ОС по умолчанию. |
| vnc_password | string | Пароль, используемый для подключения к ВМ через VNC. |
### Ссылка на консоль
| Ключ | Тип данных | Описание |
| ------ | ------ | ------ |
| console_url | string | Ссылка на консоль ВМ. |
## Примеры использования
### Создать
#### С указанием описания
```
- name: Example
hosts: localhost
tasks:
- name: Create VM with image
decort_kvmvm:
# Параметры для авторизации упущены
rg_id: "{{ rg_id }}"
name: "{{ vm_name }}"
cpu: 1
ram: 512
image_id: "{{ image_id }}"
description: vm description
state: present
```
#### С указанием объёма загрузочного диска
```
- name: Example
hosts: localhost
tasks:
- name: Create VM with image
decort_kvmvm:
# Параметры для авторизации упущены
rg_id: "{{ rg_id }}"
name: "{{ vm_name }}"
cpu: 1
ram: 512
image_id: "{{ image_id }}"
boot:
disk_size: 10
state: present
```
#### С указанием СХД
```
- name: Example
hosts: localhost
tasks:
- name: Create VM with image
decort_kvmvm:
# Параметры для авторизации упущены
rg_id: "{{ rg_id }}"
name: "{{ vm_name }}"
cpu: 1
ram: 512
image_id: "{{ image_id }}"
sep_id: "{{ sep_id }}"
pool: "{{ sep_pool_name }}"
state: present
```
#### С указанием Cloud-init user data
```
- name: Example
hosts: localhost
tasks:
- name: Create VM with image
decort_kvmvm:
# Параметры для авторизации упущены
rg_id: "{{ rg_id }}"
name: "{{ vm_name }}"
cpu: 1
ram: 512
image_id: "{{ image_id }}"
ci_user_data:
packages:
- apache2
write_files:
- content: |
<div>
Hello World!
</div>
owner: user:user
path: /var/www/html/index.html
hostname: test-apache
ssh_keys:
- rsa_public: ssh-rsa AAAAOasDmLxnD= user@pc
state: present
```
#### С указанием SSH-ключа
```
- name: Example
hosts: localhost
tasks:
- name: Create VM with image
decort_kvmvm:
# Параметры для авторизации упущены
rg_id: "{{ rg_id }}"
name: "{{ vm_name }}"
cpu: 1
ram: 512
image_id: "{{ image_id }}"
ssh_key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAA...
ssh_key_user: user
state: present
```
#### С указанием NUMA Affinity
```
- name: Example
hosts: localhost
tasks:
- name: Create VM with image
decort_kvmvm:
# Параметры для авторизации упущены
rg_id: "{{ rg_id }}"
name: "{{ vm_name }}"
cpu: 1
ram: 512
image_id: "{{ image_id }}"
numa_affinity: strict
state: present
```
#### С указанием запуска на выделенных ядрах ЦП
```
- name: Example
hosts: localhost
tasks:
- name: Create VM with image
decort_kvmvm:
# Параметры для авторизации упущены
rg_id: "{{ rg_id }}"
name: "{{ vm_name }}"
cpu: 1
ram: 512
image_id: "{{ image_id }}"
cpu_pin: true
state: present
```
#### С использованием Huge Pages
```
- name: Example
hosts: localhost
tasks:
- name: Create VM with image
decort_kvmvm:
# Параметры для авторизации упущены
rg_id: "{{ rg_id }}"
name: "{{ vm_name }}"
cpu: 1
ram: 512
image_id: "{{ image_id }}"
hp_backed: true
state: present
```
#### С указанием custom_fields
```
- name: Example
hosts: localhost
tasks:
- name: Create VM with image
decort_kvmvm:
# Параметры для авторизации упущены
rg_id: "{{ rg_id }}"
name: "{{ vm_name }}"
cpu: 1
ram: 512
image_id: "{{ image_id }}"
custom_fields:
fields:
title: Title
cpu:
mode: custom
vendor: Intel
cache:
mode: disable
topology:
sockets: 1
cores: 14
threads: 1
match: minimum
check: partial
state: present
```
#### С указанием affinity-метки
```
- name: Example
hosts: localhost
tasks:
- name: Create VM with affinity-label
decort_kvmvm:
# Параметры для авторизации упущены
rg_id: "{{ rg_id }}"
name: "{{ vm_name }}"
cpu: 1
ram: 512
image_id: "{{ image_id }}"
affinity_label: label
state: present
```
#### С указанием affinity правил
```
- name: Example
hosts: localhost
tasks:
- name: Create VM with affinity rules
decort_kvmvm:
# Параметры для авторизации упущены
rg_id: "{{ rg_id }}"
name: "{{ vm_name }}"
cpu: 1
ram: 512
image_id: "{{ image_id }}"
aff_rule:
- topology: compute
policy: RECOMMENDED
mode: EQ
key: key
value: value
state: present
```
#### С указанием anti-affinity правил
```
- name: Example
hosts: localhost
tasks:
- name: Create VM with anti-affinity rules
decort_kvmvm:
# Параметры для авторизации упущены
rg_id: "{{ rg_id }}"
name: "{{ vm_name }}"
cpu: 1
ram: 512
image_id: "{{ image_id }}"
aaff_rule:
- topology: node
policy: REQUIRED
mode: ANY
key: key
value: value
state: present
```
#### С указанием тэгов
```
- name: Example
hosts: localhost
tasks:
- name: Create VM with tags
decort_kvmvm:
# Параметры для авторизации упущены
rg_id: "{{ rg_id }}"
name: "{{ vm_name }}"
cpu: 1
ram: 512
image_id: "{{ image_id }}"
tag:
tag1_key: tag1_value
tag2_key: tag2_value
state: present
```
#### С образом
```
- name: Example
hosts: localhost
tasks:
- name: Create VM with image
decort_kvmvm:
# Параметры для авторизации упущены
rg_id: "{{ rg_id }}"
name: "{{ vm_name }}"
cpu: 1
ram: 512
image_id: "{{ image_id }}"
state: present
```
#### Без образа
##### С загрузочным диском
```
- name: Example
hosts: localhost
tasks:
- name: Create VM without image and with boot disk
decort_kvmvm:
# Параметры для авторизации упущены
rg_id: "{{ rg_id }}"
name: "{{ vm_name }}"
cpu: 1
ram: 512
boot:
disk_size: 10
state: present
```
##### Без загрузочного диска
```
- name: Example
hosts: localhost
tasks:
- name: Create VM without image and without boot disk
decort_kvmvm:
# Параметры для авторизации упущены
rg_id: "{{ rg_id }}"
name: "{{ vm_name }}"
cpu: 1
ram: 512
state: present
```
#### С включением автоматического запуска ВМ после перезапуска вычислительного узла, за которым она закреплена
```
- name: Example
hosts: localhost
tasks:
- name: Create VM
decort_kvmvm:
# Параметры для авторизации упущены
rg_id: "{{ rg_id }}"
name: "{{ vm_name }}"
cpu: 1
ram: 512
auto_start: true
state: present
```
#### С указанием чипсета
```
- name: Example
hosts: localhost
tasks:
- name: Create VM
decort_kvmvm:
# Параметры для авторизации упущены
rg_id: "{{ rg_id }}"
name: "{{ vm_name }}"
cpu: 1
ram: 512
chipset: Q35
state: present
```
### С указанием предпочтительных ядер
```
- name: Example
hosts: localhost
tasks:
- name: Create VM with preferred CPU cores
decort_kvmvm:
# Параметры для авторизации упущены
rg_id: "{{ rg_id }}"
name: "{{ vm_name }}"
cpu: 1
ram: 512
cpu_pin: true
preferred_cpu_cores:
- 0
- 1
state: present
```
### Путём клонирования другой ВМ
#### Без указания снимка
```
- name: Example
hosts: localhost
tasks:
- name: Create VM clone
decort_kvmvm:
# Параметры для авторизации упущены
name: vm_clone
clone_from:
id: "{{ vm_id }}"
force: true
```
#### С указанием имени снимка
```
- name: Example
hosts: localhost
tasks:
- name: Create VM clone
decort_kvmvm:
# Параметры для авторизации упущены
name: vm_clone
clone_from:
id: "{{ vm_id }}"
snapshot:
name: snapshot_01
force: true
```
#### С указанием временной метки снимка
```
- name: Example
hosts: localhost
tasks:
- name: Create VM clone
decort_kvmvm:
# Параметры для авторизации упущены
name: vm_clone
clone_from:
id: "{{ vm_id }}"
snapshot:
timestamp: 1739792809
force: true
```
#### С указанием даты создания снимка
```
- name: Example
hosts: localhost
tasks:
- name: Create VM clone
decort_kvmvm:
# Параметры для авторизации упущены
name: vm_clone
clone_from:
id: "{{ vm_id }}"
snapshot:
datetime: 2024-02-17 14:50:22
force: true
```
### Получение основной информации о виртуальной машине
#### По идентификатору
```
- name: Example
hosts: localhost
tasks:
- name: Get basic VM info by ID
decort_kvmvm:
# Параметры для авторизации упущены
id: "{{ vm_id }}"
```
#### По имени
```
- name: Example
hosts: localhost
tasks:
- name: Get basic VM info by name
decort_kvmvm:
# Параметры для авторизации упущены
rg_id: "{{ rg_id }}"
name: "{{ vm_name }}"
```
### Получение ссылки на консоль
```
- name: Example
hosts: localhost
tasks:
- name: Get VM console URL
decort_kvmvm:
# Параметры для авторизации упущены
id: "{{ vm_id }}"
get_console_url: true
```
### Остановить/приостановить/запустить
#### Остановить
```
- name: Example
hosts: localhost
tasks:
- name: Stop VM
decort_kvmvm:
# Параметры для авторизации упущены
id: "{{ vm_id }}"
state: poweredoff
```
#### Запустить
```
- name: Example
hosts: localhost
tasks:
- name: Start VM
decort_kvmvm:
# Параметры для авторизации упущены
id: "{{ vm_id }}"
state: poweredon
```
#### Приостановить
```
- name: Example
hosts: localhost
tasks:
- name: Pause VM
decort_kvmvm:
# Параметры для авторизации упущены
id: "{{ vm_id }}"
state: paused
```
### Подключить/отключить диски
#### Подключить
```
- name: Example
hosts: localhost
tasks:
- name: Connect data disks to VM
decort_kvmvm:
# Параметры для авторизации упущены
id: "{{ vm_id }}"
disks:
mode: update
ids:
- "{{ datadisk1_id }}"
- "{{ datadisk2_id }}"
```
#### Отключить
```
- name: Example
hosts: localhost
tasks:
- name: Disconnect data disks from VM
decort_kvmvm:
# Параметры для авторизации упущены
id: "{{ vm_id }}"
disks:
mode: match
ids: []
```
### Подключить/отключить сети
#### Подключить не-DPDK сети
```
- name: Example
hosts: localhost
tasks:
- name: Connect networks to VM
decort_kvmvm:
# Параметры для авторизации упущены
id: "{{ vm_id }}"
networks:
- type: VINS
id: "{{ vins_id }}"
ip_addr: 192.168.4.0
- type: EMPTY
- type: EXTNET
id: "{{ extnet_id }}"
ip_addr: 35.21.230.0
- type: VFNIC
id: "{{ vfpool_id }}"
state: poweredoff
```
#### Подключить не-DPDK сети с соблюдением очередности
```
- name: Example
hosts: localhost
tasks:
- name: Connect networks to VM without network order changing
decort_kvmvm:
# Параметры для авторизации упущены
id: "{{ vm_id }}"
networks:
- type: VINS
id: "{{ vins_id }}"
ip_addr: 192.168.4.0
- type: EMPTY
- type: EXTNET
id: "{{ extnet_id }}"
ip_addr: 35.21.230.0
- type: VFNIC
id: "{{ vfpool_id }}"
network_order_changing: true
state: poweredoff
```
#### Подключить DPDK сети
```
- name: Example
hosts: localhost
tasks:
- name: Connect DPDK networks to VM
decort_kvmvm:
# Параметры для авторизации упущены
id: "{{ vm_id }}"
hp_backed: true
networks:
- type: DPDK
id: "{{ dpdk1_id }}"
- type: EMPTY
- type: DPDK
id: "{{ dpdk2_id }}"
mtu: 1500
state: poweredoff
```
#### Отключить
```
- name: Example
hosts: localhost
tasks:
- name: Disconnect networks from VM
decort_kvmvm:
# Параметры для авторизации упущены
id: "{{ vm_id }}"
networks: []
state: poweredoff
```
### Откатить ВМ к состоянию снимка
```
- name: Example
hosts: localhost
tasks:
- name: Rollback VM to snapshot
decort_kvmvm:
# Параметры для авторизации упущены
id: "{{ vm_id }}"
rollback_to: snapshot_01
state: poweredoff
```
### Изменить
#### Объём загрузочного диска в большую сторону
```
- name: Example
hosts: localhost
tasks:
- name: Increase boot disk size
decort_kvmvm:
# Параметры для авторизации упущены
id: "{{ vm_id }}"
boot:
disk_size: 15
state: poweredoff
```
#### Количество ЦП
```
- name: Example
hosts: localhost
tasks:
- name: Change CPU amount
decort_kvmvm:
# Параметры для авторизации упущены
id: "{{ vm_id }}"
cpu: 1
state: poweredoff
```
#### Объём ОЗУ
```
- name: Example
hosts: localhost
tasks:
- name: Change RAM size
decort_kvmvm:
# Параметры для авторизации упущены
id: "{{ vm_id }}"
ram: 512
state: poweredoff
```
#### Тэги
```
- name: Example
hosts: localhost
tasks:
- name: Change tags
decort_kvmvm:
# Параметры для авторизации упущены
id: "{{ vm_id }}"
tag:
tag1_key: tag1_value
tag2_key: tag2_value
```
#### Affinity метку
```
- name: Example
hosts: localhost
tasks:
- name: Change affinity label
decort_kvmvm:
# Параметры для авторизации упущены
id: "{{ vm_id }}"
affinity_label: Affinity label 1
```
#### Affinity правила
```
- name: Example
hosts: localhost
tasks:
- name: Change affinity rules
decort_kvmvm:
# Параметры для авторизации упущены
id: "{{ vm_id }}"
aff_rule:
- topology: compute
policy: REQUIRED
mode: EQ
key: app
value: main
- topology: node
policy: RECOMMENDED
mode: NE
key: state
value: started
```
#### Anti-affinity правила
```
- name: Example
hosts: localhost
tasks:
- name: Change anti-affinity rules
decort_kvmvm:
# Параметры для авторизации упущены
id: "{{ vm_id }}"
aaff_rule:
- topology: compute
policy: REQUIRED
mode: ANY
key: app
value: main
```
#### Описание
```
- name: Example
hosts: localhost
tasks:
- name: Change description
decort_kvmvm:
# Параметры для авторизации упущены
id: "{{ vm_id }}"
description: vm description
```
#### Чипсет
```
- name: Example
hosts: localhost
tasks:
- name: Change chipset
decort_kvmvm:
# Параметры для авторизации упущены
id: "{{ vm_id }}"
chipset: i440fx
state: poweredoff
```
#### Правило NUMA Affinity
```
- name: Example
hosts: localhost
tasks:
- name: Change NUMA affinity rule
decort_kvmvm:
# Параметры для авторизации упущены
id: "{{ vm_id }}"
numa_affinity: loose
state: poweredoff
```
#### Запуск на выделенных ядрах ЦП
```
- name: Example
hosts: localhost
tasks:
- name: Change CPU Pinning usage
decort_kvmvm:
# Параметры для авторизации упущены
id: "{{ vm_id }}"
cpu_pin: true
state: poweredoff
```
#### Использование Huge Pages
```
- name: Example
hosts: localhost
tasks:
- name: Change Huge Pages usage
decort_kvmvm:
# Параметры для авторизации упущены
id: "{{ vm_id }}"
hp_backed: true
state: poweredoff
```
#### Имя
```
- name: Example
hosts: localhost
tasks:
- name: Rename VM
decort_kvmvm:
# Параметры для авторизации упущены
id: "{{ vm_id }}"
name: "{{ new_vm_name }}"
```
#### XML виртуальной машины
##### Изменение
```
- name: Example
hosts: localhost
tasks:
- name: Change XML management
decort_kvmvm:
# Параметры для авторизации упущены
id: "{{ vm_id }}"
custom_fields:
fields:
cpu:
mode: custom
vendor: Intel
cache:
mode: enable
os:
type:
machine: pc-i440fx-artful
```
##### Отключение управления ВМ через XML
```
- name: Example
hosts: localhost
tasks:
- name: Disable XML management
decort_kvmvm:
# Параметры для авторизации упущены
id: "{{ vm_id }}"
custom_fields:
disable: true
```
#### Автоматический запуск ВМ после перезапуска вычислительного узла, за которым она закреплена
##### Включить
```
- name: Example
hosts: localhost
tasks:
- name: Enable auto starting pinned VM
decort_kvmvm:
# Параметры для авторизации упущены
id: "{{ vm_id }}"
auto_start: true
```
##### Выключить
```
- name: Example
hosts: localhost
tasks:
- name: Disable auto starting of pinned VM
decort_kvmvm:
# Параметры для авторизации упущены
id: "{{ vm_id }}"
auto_start: false
```
#### Предпочтительные ядра
```
- name: Example
hosts: localhost
tasks:
- name: Change preferred CPU cores
decort_kvmvm:
# Параметры для авторизации упущены
id: "{{ vm_id }}"
cpu_pin: true
preferred_cpu_cores:
- 0
- 1
- 2
state: poweredoff
```
#### Загрузочный диск
```
- name: Example
hosts: localhost
tasks:
- name: Make the disk bootable
decort_kvmvm:
# Параметры для авторизации упущены
id: "{{ vm_id }}"
boot:
disk_id: "{{ vm_disk1_id }}"
```
### Удалить
#### Безвозвратно
```
- name: Example
hosts: localhost
tasks:
- name: Delete VM
decort_kvmvm:
# Параметры для авторизации упущены
id: "{{ vm_id }}"
state: absent
```