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.

888 lines
42 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** и [примеры](#с-указанием-объёма-загрузочного-диска))
- **с указанием СХД** (см. параметры **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** и [примеры](#с-загрузочным-диском))
- **без загрузочного диска** (см. параметр **boot_disk** и [примеры](#без-загрузочного-диска))
- **с включением автоматического запуска ВМ после перезапуска вычислительного узла, за которым она закреплена** (см. параметр **auto_start** и [примеры](#с-включением-автоматического-запуска-вм-после-перезапуска-вычислительного-узла-за-которым-она-закреплена))
- **получить информацию** (см. [возвращаемые значения](#возвращаемые-значения-модуля-decort_kvmvm) и [примеры](#получение-основной-информации-о-виртуальной-машине))
- **остановить/приостановить/запустить** (см. параметр **state** и [примеры](#остановитьприостановитьзапустить))
- **подключить/отключить диски с данными** (см. параметр **data_disks** и [примеры](#подключитьотключить-диски-с-данными))
- **подключить/отключить сети** (см. параметры **networks** и **network_order_changing** и [примеры](#подключитьотключить-сети))
- **изменить** (см. [примеры](#изменить))
- **объём загрузочного диска в большую сторону** (см. параметр **boot_disk** и [примеры](#объём-загрузочного-диска-в-большую-сторону))
- **количество CPU** (см. параметр **cpu** и [примеры](#количество-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 Pinning** (см. параметр **cpu_pin** и [примеры](#использование-cpu-pinning))
- **использование Huge Pages** (см. параметр **hp_backed** и [примеры](#использование-huge-pages))
- **имя** (см. параметр **name** и [примеры](#имя))
- **XML виртуальной машины** (см. параметр **custom_fields** и [примеры](#xml-виртуальной-машины))
- **автоматический запуск ВМ после перезапуска вычислительного узла, за которым она закреплена** (см. параметр **auto_start** и [примеры](#автоматический-запуск-вм-после-перезапуска-вычислительного-узла-за-которым-она-закреплена))
- **удалить (безвозвратно)** (см. параметр **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_disk | (int) | Объём загрузочного диска виртуальной машины в ГБ.<br>Если параметр не задан, размер будет равен размеру образа.<br>Если не заданы этот параметр и параметры `image_id` и `image_name`, то виртуальная машина будет создана без загрузочного диска. |
| chipset | (string)<br>Значения:<br>`Q35`<br>`i440fx` | Эмулируемый чипсет. |
| ci_user_data | (dict) | конфигурация для cloud-init
| cpu | (int) | Количество виртуальных процессоров, выделяемых виртуальной машине. |
| cpu_pin | (bool) | Запуск виртуальной машины на выделенных процессорах. Чтобы использовать эту функцию, система должна быть предварительно сконфигурирована путем выделения процессоров на физическом узле.<br>Значение по умолчанию при создании: `false`. |
| custom_fields | (dict) | Словарь, управляющий XML виртуальной машины.<br>Ключи словаря:<br>&bull; `disable` (bool) - отключение управления виртуальной машиной через XML. Значение по умолчанию при создании: `true`<br>&bull; `fields` (dict) - поля для управления XML виртуальной машины. |
| data_disks | (list) | Список идентификаторов дисков, которые следует подключить к данной виртуальной машине как дополнительные.<br>Чтобы отключить все диски, нужно указать пустой список `[]`.|
| description | (string) | Опциональное описание виртуальной машины. |
| 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`. Если пул не задан, то он будет выбран платформой.
| ram | (int) | Объем оперативной памяти в МБ, выделенной данной ВМ. Параметр является обязательным при создании. Если указать его для уже существующей ВМ, то будет выполнена попытка изменить объем выделенной памяти. |
| rg_id | (int) | Уникальный цифровой идентификатор уже существующей ресурсной группы, в которой будет создана новая или находится уже существующая ВМ. Данный параметр является одним из методов идентификации существующей РГ (альтернативой является задание комбинации `account_name` и `rg_name`).|
| rg_name | (string) | Имя уже существующей ресурсной группы, в которой будет создаа новая или находится уже существующая ВМ. Данный параметр является одним из методов идентификации существующей РГ, когда задается пара `account_name` и `rg_name` (альтернативой является задание `rg_id`). Если заданы и `rg_id`, и `rg_name`, то параметр `rg_name` игнорируется.|
| 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 | Автоматический запуск ВМ после перезапуска вычислительного узла, за которым она закреплена. |
| chipset | string | Эмулируемый чипсет. |
| cpu | int | Количество виртуальных процессоров. |
| cpu_pin | bool | Запуск виртуальной машины на выделенных процессорах. |
| custom_fields | dict | Словарь, управляющий XML виртуальной машины. Если `null`, то управление виртуальной машиной через XML отключено, иначе - управление через XML включено. |
| data_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 | Пароль пользователя ОС по умолчанию. |
| private_ips | list | Список IP-адресов на сетевых интерфейсах ВМ, которые подключены к внутренним сетям. |
| public_ips | list | Список IP адресов на сетевых интерфейсах ВМ, которые подключены к внешним сетям. |
| ram | int | Объём ОЗУ ВМ в МБ. |
| rg_id | int | Идентификатор ресурсной группы, которой принадлежит данная ВМ. |
| state | string | Состояние ВМ.|
| tags | dict | Словарь, пары ключ-значение которого, описывают тэги ВМ.
| tech_status | str | Технический статус ВМ.
| username | string | Имя пользователя ОС по умолчанию. |
| vnc_password | string | Пароль, используемый для подключения к ВМ через VNC. |
## Примеры использования
### Создать
#### С указанием описания
```
- 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 }}"
chipset: Q35
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 }}"
chipset: Q35
boot_disk: 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 }}"
chipset: Q35
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 }}"
chipset: Q35
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 }}"
chipset: Q35
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 }}"
chipset: Q35
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 }}"
chipset: Q35
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 }}"
chipset: Q35
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 }}"
chipset: Q35
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 }}"
chipset: Q35
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 }}"
chipset: Q35
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 }}"
chipset: Q35
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 }}"
chipset: Q35
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
chipset: Q35
boot_disk: 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
chipset: Q35
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
auto_start: true
state: present
```
### Получение основной информации о виртуальной машине
#### По идентификатору
```
- 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: 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 }}"
data_disks:
- "{{ datadisk1_id }}"
- "{{ datadisk2_id }}"
```
#### Отключить
```
- name: Example
hosts: localhost
tasks:
- name: Disconnect data disks from VM
decort_kvmvm:
# Параметры для авторизации упущены
id: "{{ vm_id }}"
data_disks: []
```
### Подключить/отключить сети
#### Подключить не-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 }}"
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: Increase boot disk size
decort_kvmvm:
# Параметры для авторизации упущены
id: "{{ vm_id }}"
boot_disk: 15
state: poweredoff
```
#### Количество CPU
```
- 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
```
#### Использование CPU Pinning
```
- 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: Delete VM
decort_kvmvm:
# Параметры для авторизации упущены
id: "{{ vm_id }}"
state: absent
```