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.

95 KiB

Модуль decort_kvmvm

Обзор модуля decort_kvmvm

Модуль decort_kvmvm предназначен для выполнения следующих действий над виртуальными машинами:

Параметры модуля decort_kvmvm

Ниже приведен список параметров для модуля decort_kvmvm (за исключением общих параметров авторизации):

Параметр Тип Описание
aaff_rule (list) Список словарей, описывающих anti-affinity правила.
Чтобы очистить anti-affinity правила, нужно указать пустой список [].
topology (str)
Значения:
node
compute
Назначение правила.
policy (str)
Значения:
RECOMMENDED
REQUIRED
Степень "необходимости" этого правила.
mode (str)
Значения:
EQ
NE
ANY
Режим сравнения.
EQ - должно соответствовать.
NE - не должно соответствовать.
ANY - любое.
key (str) Ключ, который учитывается при анализе данного правила.
value (str) Значение ключа, учитываемого при анализе данного правила (зависит от ключа mode).
account_id (int) Идентификатор аккаунта. Этот параметр является опциональным и используется в сценариях, когда уже существующая ресурсная группа задается комбинацией account_id и rg_name.
Если задан account_id, то account_name игнорируется.
account_name (str) Имя аккаунта. Этот параметр является опциональным и используется в сценариях, когда уже существующая ресурсная группа задается комбинацией account_name и rg_name.
Если задан account_id, то account_name игнорируется.
aff_rule (list) Список словарей, описывающих affinity правила.
Чтобы очистить affinity правила, нужно указать пустой список [].
topology (str)
Значения:
node
compute
Назначение правила.
policy (str)
Значения:
RECOMMENDED
REQUIRED
Степень "необходимости" этого правила.
mode (str)
Значения:
EQ
NE
ANY
Режим сравнения.
EQ - должно соответствовать.
NE - не должно соответствовать.
ANY - любое.
key (str) Ключ, который учитывается при анализе данного правила.
value (str) Значение ключа, учитываемого при анализе данного правила (зависит от ключа mode).
affinity_label (str) Метка affinity.
Чтобы очистить метку affinity, нужно указать пустую строку "".
auto_start (bool) Включить/выключить автоматический запуск ВМ после перезапуска вычислительного узла, за которым она закреплена.
Если параметр не задан при создании ВМ, то значение будет выбрано платформой.
abort_cloning (bool) Отменить клонирование ВМ. Может быть задан только для существующей ВМ.
boot (dict) Параметры загрузки.
disk_id (int) Идентификатор диска, который будет установлен как загрузочный.
disk_size (int) Объём загрузочного диска виртуальной машины в ГБ. Если параметр не задан, размер будет равен размеру образа. Если не заданы этот параметр и параметр image_id, то виртуальная машина будет создана без загрузочного диска.
mode (str)
Значения:
bios
uefi
Режим загрузки.
Значение по умолчанию при создании: bios.
loader_type (str)
Значения:
linux
windows
unknown
Тип загрузчика операционной системы.
Значение по умолчанию при создании: unknown.
from_cdrom (int) Идентификатор образа CD-ROM, с которого должна загрузиться ВМ при запуске.
order (list)
Значения:
cdrom
hd
network
Порядок загрузки.
disk_redeploy (bool) Пересоздание загрузочного диска.
cdrom (dict) Словарь параметров для взаимодействия с CD-ROM.
image_id (int) Идентификатор образа CD-ROM.
mode (str)
Значения:
insert
eject
Default: insert
Режим работы.
chipset (str)
Значения:
Q35
i440fx
Эмулируемый чипсет.
Значение по умолчанию при создании: i440fx.
ci_user_data (dict) Конфигурация для cloud-init.
clone_from (dict) Словарь параметров для создания ВМ путём клонирования другой ВМ.
Для создания клона также должен быть указан параметр name для указания имени клона.
id (int) Идентификатор клонируемой ВМ (обязательный).
force (bool)
Default: false
Игнорировать, что ВМ запущена.
sep_pool_name (str) Название пула СХД.
sep_id (int) Идентификатор СХД.
snapshot (dict) Параметры клонируемого снимка ВМ.
name (str) Название снимка.
timestamp (int) Unix-время.
datetime (str) Дата и время в формате ггггммддччммсс, альтернатива параметру timestamp. Допустимо использовать любой разделитель между группами цифр для повышения читаемости, например, гггг-мм-дд чч:мм:сс.
storage_policy_id (int) Идентификатор политики хранения. Обязательный параметр.
cpu (int) Количество виртуальных процессоров, выделяемых виртуальной машине.
cpu_pin (bool) Запуск виртуальной машины на выделенных ядрах ЦП.
Значение по умолчанию при создании: false.
custom_fields (dict) Словарь, управляющий XML виртуальной машины.
disable (bool) Отключение управления виртуальной машиной через XML. Значение по умолчанию при создании: true.
fields (dict) Поля для управления XML виртуальной машины.
description (str) Опциональное описание виртуальной машины.
disks (dict) Словарь, описывающий диски ВМ.
mode (str)
Значения:
update
detach
delete
match
Default: update
Режим работы параметра.
update - указанные диски подключены.
detach - указанные диски отключены.
delete - указанные диски отключены и удалены; удаляются только отключаемые диски.
match - подключены только указанные диски.
objects (list) Список словарей, описывающих диски.
id (int) Идентификатор диска. Обязательный параметр.
pci_slot_num_hex (str) Номер слота PCI.
bus_num_hex (str) Номер шины.
get_console_url (bool)
Default: false
Получить ссылку на консоль ВМ.
get_cloning_status (bool) Получить статус клонирования ВМ.
get_snapshot_merge_status (bool) Получить статус копирования данных из удаляемого снимка на СХД Shared.
guest_agent (dict) Параметры для взаимодействия с QEMU Guest Agent.
enabled (bool) Включить/выключить QEMU Guest Agent.
exec (dict) Команда, которую необходимо выполнить.
cmd (str) Название. Обязательный параметр.
args (dict)
Default: {}
Аргументы.
update_available_commands (bool) Обновить список доступных команд.
hot_resize (bool) Поддержка изменения объёма ОЗУ и количества процессоров у запущенной ВМ.
Значение по умолчанию при создании: false.
hp_backed (bool) Использовать Huge Pages для выделения оперативной памяти виртуальной машины. Система должна быть предварительно сконфигурирована путем выделения Huge Pages на физическом узле.
Значение по умолчанию при создании: false.
id (int) Уникальный цифровой идентификатор виртуальной машины. Этот параметр используется как один из методов идентификации существующей ВМ (альтернатива по комбинации name, rg_name и account_name).
Если при вызове модуля decort_kvmvm существующая ВМ идентифицируется по id, то параметры account_id, account_name, rg_id и rg_name игнорируются.
image_id (int) Уникальный цифровой идентификатор образа.
Если этот параметр не задан при создании ВМ, то ВМ будет создана без образа.
Изменение образа у существующей ВМ возможно только при пересоздании загрузочного диска (см. disk_redeploy).
name (str) Имя ВМ. Чтобы модуль decort_kvmvm мог управлять сервером по его названию, также необходимо задать комбинацию account_name и rg_name или rg_id.
Если для существующей ВМ указаны и name, и id, то параметр name используется для переименования.
network_interface_naming (str)
Значения:
ens
eth
Шаблон именования сетевых интерфейсов в ОС Linux.
Значение по умолчанию при создании: ens.
network_order_changing (bool)
Default: false
Соблюдение очерёдности сетей при их изменении.
Если true, то сравнение списка уже подключённых к ВМ сетей со списком из параметра networks будет производится с учётом очерёдности сетей и, при выявлении несоответствия, сначала будет произведено отключение всех сетей от ВМ, а затем подключение сетей в соответствии с параметром networks.
Если false, то очерёдность при сравнении учитываться не будет. Соответственно, сети, которые имеются в списке параметра networks и уже подключены к ВМ, переподключаться не будут, что может кратно уменьшить время выполнения изменения сетей.
networks (list) Список словарей, описывающих сети ВМ.

ВМ не может одновременно быть подключена к сети DPDK и к сети другого типа, кроме EMPTY.

ВМ не может одновременно быть подключена к сети SDN и к сети другого типа, кроме EMPTY, VFNIC.

Чтобы отключить все сети, нужно указать пустой список [].
enabled (bool) Включен или выключен сетевой интерфейс. Изменение доступно для сетей VINS, EXTNET, DPDK, SDN, TRUNK.
Значение по умолчанию при подключении новой сети: true.
type (str)
Значения:
VINS
EXTNET
VFNIC
DPDK
SDN
TRUNK
EMPTY
Тип сети. Обязательный параметр.
id (int | str) Идентификатор внутренней/внешней/DPDK сети, пула вирт. функций или логического порта SDN.
ip_addr (str) IP-адрес, используемый для подключения к данной сети.
Применимо только для VINS и EXTNET.
mac (str) MAC-адрес сетевого интерфейса.
Не применим для сети типа EMPTY.
mtu (int) MTU интерфейса.
Применимо только для EXTNET и DPDK.
security_group_ids (list) Идентификаторы групп безопасности.
security_group_mode (bool) Включить/выключить группы безопасности.
Значение по умолчанию при подключении новой сети: false.
numa_affinity (str)
Значения:
strict
loose
none
Правило применения NUMA affinity к виртуальной машине.
strict - строго с NUMA affinity.
loose - использовать NUMA affinity, если возможно.
none - отменить применение NUMA affinity.
Значение по умолчанию при создании: none.
os_version (str) Версия операционной системы. Если не задано при создании ВМ с образом или при пересоздании загрузочного диска, то наследуется от названия образа.
pool (str) Пул СХД, заданной параметром sep_id. Если пул не задан, то он будет выбран платформой.
preferred_cpu_cores (list) Список номеров предпочтительных выделенных ядер ЦП (см. параметр cpu_pin).
Чтобы очистить список номеров предпочтительных выделенных ядер ЦП, нужно указать пустой список [].
ram (int) Объем оперативной памяти в МБ, выделенной данной ВМ. Параметр является обязательным при создании. Если указать его для уже существующей ВМ, то будет выполнена попытка изменить объем выделенной памяти.
rg_id (int) Уникальный цифровой идентификатор уже существующей ресурсной группы, в которой будет создана новая или находится уже существующая ВМ.
Данный параметр является одним из методов идентификации существующей РГ (альтернативой является задание комбинации account_name и rg_name).
rg_name (str) Имя уже существующей ресурсной группы, в которой будет создана новая или находится уже существующая ВМ.
Данный параметр является одним из методов идентификации существующей РГ, когда задается пара account_name и rg_name (альтернативой является задание rg_id).
Если заданы и rg_id, и rg_name, то параметр rg_name игнорируется.
rollback_to (str) Имя снимка, к состоянию которого необходимо совершить откат ВМ.
sep_id (int) Идентификатор СХД для загрузочного диска ВМ. Если не задан, то будет использоваться СХД образа.
ssh_key (str) Открытая часть SSH-ключа, который необходимо добавить на создаваемую ВМ для пользователя, заданного параметром ssh_key_user.
Данный параметр применим только для ОС Linux, используется только при создании и игнорируется при других операциях.
ssh_key_user (str) Имя пользователя в гостевой ОС (только для Linux), для которого добавляется SSH-ключ, заданный параметром ssh_key.
Данный параметр является обязательным, если задан ssh_key. Используется только при создании и игнорируется при других операциях.
state (str)
Значения:
present
absent
started
stopped
paused
Целевое состояние ВМ.
present - виртуальная машина существует и не удалена. Если удалена в корзину, то будет восстановлена из корзины.
absent - виртуальная машина безвозвратно удалена.
started - виртуальная машина запущена. Если остановлена, то будет запущена. Если удалена в корзину, то будет восстановлена из корзины.
stopped - виртуальная машина остановлена. Если запущена, то будет остановлена.
paused - виртуальная машина приостановлена.
Значение по умолчанию при создании: present
storage_policy_id (int) Идентификатор политики хранения. Обязателен при создании виртуальной машины с диском/дисками и пересоздании загрузочного диска. Не поддерживается изменение в существующей виртуальной машине.
tag (dict) Словарь, пары ключ-значение которого, описывают тэги для ВМ.
Чтобы очистить теги, нужно указать пустой словарь {}.
zone_id (int) Идентификатор зоны ВМ.

Возвращаемые значения модуля decort_kvmvm

Модуль decort_kvmvm возвращает информацию о виртуальной машине в виде словаря facts со следующими ключами:

Основная информация

Ключ Тип Описание
account_id int Идентификатор аккаунта.
affinity_label str Метка affinity.
affinity_rules list Список словарей, описывающих affinity правила.
anti_affinity_rules list Список словарей, описывающих anti-affinity правила.
arch str Архитектура ВМ.
auto_start bool Автоматический запуск ВМ после перезапуска вычислительного узла, за которым она закреплена.
boot_mode str Режим загрузки.
cd_image_id int Идентификатор диска CD-ROM.
clones list Список идентификаторов клонов ВМ.
clone_reference int Идентификатор ВМ, клоном которой является данная ВМ.
chipset str Эмулируемый чипсет.
cpu int Количество виртуальных процессоров.
cpu_pin bool Запуск виртуальной машины на выделенных ядрах ЦП.
custom_fields dict | null Словарь, управляющий XML виртуальной машины.
Если null, то управление виртуальной машиной через XML отключено, иначе - управление через XML включено.
disks list Список словарей, описывающих диски, подключенные к ВМ.
disk_size int Размер загрузочного диска в ГБ.
guest_agent dict Информация о QEMU Guest Agent ВМ.
enabled bool Включен/выключен.
enabled_agent_features list Список доступных команд.
exec_result any Результат выполнения команды.
guid str Идентификатор.
last_update int Временная метка последнего обновления доступных команд.
user str Пользователь, совершивший последнее обновление доступных команд.
hot_resize bool Поддержка изменения объёма ОЗУ и количества процессоров у запущенной ВМ.
hp_backed bool Использовать Huge Pages для выделения оперативной памяти виртуальной машины.
id int Идентификатор ВМ.
image_id int | null Идентификатор образа.
interfaces list Список словарей, описывающих сетевые интерфейсы ВМ, отсортированный по номеру слота PCI.
boot_loader_type str Тип загрузчика операционной системы.
boot_loader_metaiso dict | null Информация об образе загрузчика ВМ.
device_name str Имя устройства
path str Путь к файлу образа.
name str Имя ВМ.
network_interface_naming str Шаблон именования сетевых интерфейсов в ОС Linux.
numa_affinity str Правило применения NUMA affinity к виртуальной машине.
os_version str Версия операционной системы.
password str Пароль пользователя ОС по умолчанию.
pinned_to_stack bool ВМ привязана к вычислительному узлу.
preferred_cpu_cores list Список номеров предпочтительных выделенных ядер ЦП.
private_ips list Список IP-адресов на сетевых интерфейсах ВМ, которые подключены к внутренним сетям.
public_ips list Список IP адресов на сетевых интерфейсах ВМ, которые подключены к внешним сетям.
ram int Объём ОЗУ ВМ в МБ.
rg_id int Идентификатор ресурсной группы, которой принадлежит данная ВМ.
snapshots list Список словарей, описывающих снимки ВМ.
state str Состояние ВМ.
tags dict Словарь, пары ключ-значение которого, описывают тэги ВМ.
tech_status str Технический статус ВМ.
username str Имя пользователя ОС по умолчанию.
vnc_password str Пароль, используемый для подключения к ВМ через VNC.
zone_id int Идентификатор зоны ВМ.

Ссылка на консоль

Ключ Тип Описание
console_url str Ссылка на консоль ВМ.

Статус копирования данных из удаляемого снимка на СХД Shared

Ключ Тип Описание
snapshot_merge_status dict Словарь, где ключ - идентификатор диска, а значение - статус.

Статус клонирования

Ключ Тип Описание
cloning_status dict Словарь, описывающий статус клонирования.
disk_id int Идентификатор клонируемого диска
status dict Словарь с подробным описанием статуса.
Может быть пустым словарем {}.
type int Тип клонирования.
bandwidth int Скорость клонирования данных.
cur int Объём переданных данных.
end int Общий объём передаваемых данных.
ready bool Готовность клонирования.
progress_percent int Прогресс клонирования в процентах.

Примеры использования

Создать

С указанием описания

- 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 }}"
        storage_policy_id: "{{ storage_policy_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 }}"
        storage_policy_id: "{{ storage_policy_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 }}"
        storage_policy_id: "{{ storage_policy_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 }}"
        storage_policy_id: "{{ storage_policy_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 }}"
        storage_policy_id: "{{ storage_policy_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 }}"
        storage_policy_id: "{{ storage_policy_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 }}"
        storage_policy_id: "{{ storage_policy_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 }}"
        storage_policy_id: "{{ storage_policy_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 }}"
        storage_policy_id: "{{ storage_policy_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 }}"
        storage_policy_id: "{{ storage_policy_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 }}"
        storage_policy_id: "{{ storage_policy_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 }}"
        storage_policy_id: "{{ storage_policy_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 }}"
        storage_policy_id: "{{ storage_policy_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 }}"
        storage_policy_id: "{{ storage_policy_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
        storage_policy_id: "{{ storage_policy_id }}"
        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
        storage_policy_id: "{{ storage_policy_id }}"
        state: present
С указанием режима загрузки
- name: Example
  hosts: localhost
  tasks:
    - name: Create VM without image and with boot mode
      decort_kvmvm:
        # Параметры для авторизации упущены
        rg_id: "{{ rg_id }}"
        name: "{{ vm_name }}"
        cpu: 1
        ram: 512
        storage_policy_id: "{{ storage_policy_id }}"
        boot:
          mode: bios
С указанием типа загрузчика ОС
- name: Example
  hosts: localhost
  tasks:
    - name: Create VM without image and with loader type
      decort_kvmvm:
        # Параметры для авторизации упущены
        rg_id: "{{ rg_id }}"
        name: "{{ vm_name }}"
        cpu: 1
        ram: 512
        storage_policy_id: "{{ storage_policy_id }}"
        boot:
          loader_type: linux
С указанием именования сетевых интерфейсов
- name: Example
  hosts: localhost
  tasks:
    - name: Create VM without image and with network interface naming
      decort_kvmvm:
        # Параметры для авторизации упущены
        rg_id: "{{ rg_id }}"
        name: "{{ vm_name }}"
        cpu: 1
        ram: 512
        storage_policy_id: "{{ storage_policy_id }}"
        network_interface_naming: ens
С поддержкой изменения объема ОЗУ и количества ЦП у запущенной ВМ
- name: Example
  hosts: localhost
  tasks:
    - name: Create VM without image and with hot resize
      decort_kvmvm:
        # Параметры для авторизации упущены
        rg_id: "{{ rg_id }}"
        name: "{{ vm_name }}"
        cpu: 1
        ram: 512
        storage_policy_id: "{{ storage_policy_id }}"
        hot_resize: true

С включением автоматического запуска ВМ после перезапуска вычислительного узла, за которым она закреплена

- name: Example
  hosts: localhost
  tasks:
    - name: Create VM
      decort_kvmvm:
        # Параметры для авторизации упущены
        rg_id: "{{ rg_id }}"
        name: "{{ vm_name }}"
        cpu: 1
        ram: 512
        storage_policy_id: "{{ storage_policy_id }}"
        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
        storage_policy_id: "{{ storage_policy_id }}"
        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
        storage_policy_id: "{{ storage_policy_id }}"
        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
          storage_policy_id: "{{ storage_policy_id }}"

С указанием имени снимка

- 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
          storage_policy_id: "{{ storage_policy_id }}"

С указанием временной метки снимка

- name: Example
  hosts: localhost
  tasks:
    - name: Create VM clone
      decort_kvmvm:
        # Параметры для авторизации упущены
        name: vm_clone
        clone_from:
          id: "{{ vm_id }}"
          snapshot:
            timestamp: 1739792809
          force: true
          storage_policy_id: "{{ storage_policy_id }}"

С указанием даты создания снимка

- 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
          storage_policy_id: "{{ storage_policy_id }}"

С указанием СХД

- name: Example
  hosts: localhost
  tasks:
    - name: Create VM clone
      decort_kvmvm:
        # Параметры для авторизации упущены
        name: vm_clone
        clone_from:
          id: "{{ vm_id }}"
          force: true
          sep_pool_name: "{{ sep_pool_name }}"
          sep_id: "{{ sep_id }}"
          storage_policy_id: "{{ storage_policy_id }}"

С указанием зоны

- name: Example
  hosts: localhost
  tasks:
    - name: Create VM with zone id
      decort_kvmvm:
        # Параметры для авторизации упущены
        rg_id: "{{ rg_id }}"
        name: "{{ vm_name }}"
        cpu: 1
        ram: 512
        storage_policy_id: "{{ storage_policy_id }}"
        zone_id: 2
        state: present

С указанием версии операционной системы

- name: Example
  hosts: localhost
  tasks:
    - name: Create VM with OS version
      decort_kvmvm:
        # Параметры для авторизации упущены
        rg_id: "{{ rg_id }}"
        name: "{{ vm_name }}"
        cpu: 1
        ram: 512
        storage_policy_id: "{{ storage_policy_id }}"
        os_version: "{{ os_version }}"
        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: 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: stopped

Запустить

- name: Example
  hosts: localhost
  tasks:
    - name: Start VM
      decort_kvmvm:
        # Параметры для авторизации упущены
        id: "{{ vm_id }}"
        state: started

Приостановить

- name: Example
  hosts: localhost
  tasks:
    - name: Pause VM
      decort_kvmvm:
        # Параметры для авторизации упущены
        id: "{{ vm_id }}"
        state: paused

Запустить с загрузкой с образа CD-ROM

- name: Example
  hosts: localhost
  tasks:
    - name: Boot from CD-ROM
      decort_kvmvm:
        # Параметры для авторизации упущены
        id: "{{ vm_id }}"
        boot:
          from_cdrom: 10
        state: started

Подключить/отключить диски

Подключить

- name: Example
  hosts: localhost
  tasks:
    - name: Connect data disks to VM
      decort_kvmvm:
        # Параметры для авторизации упущены
        id: "{{ vm_id }}"
        disks:
          mode: update
          objects:
            - id: "{{ datadisk1_id }}"
              pci_slot_num_hex: "{{ pci_slot_num_hex }}"
              bus_num_hex: "{{ bus_num_hex }}"
            - id: "{{ datadisk2_id }}"

Отключить

- name: Example
  hosts: localhost
  tasks:
    - name: Disconnect data disks from VM
      decort_kvmvm:
        # Параметры для авторизации упущены
        id: "{{ vm_id }}"
        disks:
          mode: match
          objects: []

Подключить/отключить сети

Подключить VINS/EXTNET/VFNIC-сети

- 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
            mac: "00:11:22:33:44:55"
          - type: EMPTY
          - type: EXTNET
            id: "{{ extnet_id }}"
            mtu: 1500
            ip_addr: 35.21.230.0
          - type: VFNIC
            id: "{{ vfpool_id }}"
          - type: TRUNK
            id: "{{ trunk_id }}"
        state: stopped

Подключить VINS/EXTNET/VFNIC-сети с соблюдением очередности

- name: Example
  hosts: localhost
  tasks:
    - name: Connect networks to VM with network order changing
      decort_kvmvm:
        # Параметры для авторизации упущены
        id: "{{ vm_id }}"
        networks:
          - type: VINS
            id: "{{ vins_id }}"
            ip_addr: 192.168.4.0
            mac: "00:11:22:33:44:55"
          - type: EMPTY
          - type: EXTNET
            id: "{{ extnet_id }}"
            mtu: 1500
            ip_addr: 35.21.230.0
          - type: VFNIC
            id: "{{ vfpool_id }}"
          - type: TRUNK
            id: "{{ trunk_id }}"
        network_order_changing: true
        state: stopped

Подключить 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: DPDK
            id: "{{ dpdk2_id }}"
            mtu: 1500
        state: stopped

Подключить сеть с выключенным интерфейсом

- name: Example
  hosts: localhost
  tasks:
    - name: Connect network with disabled interface
      decort_kvmvm:
        # Параметры для авторизации упущены
        id: "{{ vm_id }}"
        networks:
          - type: "{{ network_type }}"
            id: "{{ network_id }}"
            enabled: false
        state: stopped

Подключить SDN сеть

- name: Example
  hosts: localhost
  tasks:
    - name: Connect SDN network to VM
      decort_kvmvm:
        # Параметры для авторизации упущены
        id: "{{ vm_id }}"
        networks:
          - type: SDN
            mac: "11:22:33:44:55:66"
            id: "{{ sdn_logical_port_id }}"
        state: stopped

Отключить

- name: Example
  hosts: localhost
  tasks:
    - name: Disconnect networks from VM
      decort_kvmvm:
        # Параметры для авторизации упущены
        id: "{{ vm_id }}"
        networks: []
        state: stopped

Включить/выключить сетевой интерфейс

Включить

- name: Example
  hosts: localhost
  tasks:
    - name: Enable VM interface
      decort_kvmvm:
        # Параметры для авторизации упущены
        id: "{{ vm_id }}"
        networks:
          - type: "{{ network_type }}"
            id: "{{ network_id }}"
            enabled: true

Выключить

- name: Example
  hosts: localhost
  tasks:
    - name: Disable VM interface
      decort_kvmvm:
        # Параметры для авторизации упущены
        id: "{{ vm_id }}"
        networks:
          - type: "{{ network_type }}"
            id: "{{ network_id }}"
            enabled: false

Откатить ВМ к состоянию снимка

- name: Example
  hosts: localhost
  tasks:
    - name: Rollback VM to snapshot
      decort_kvmvm:
        # Параметры для авторизации упущены
        id: "{{ vm_id }}"
        rollback_to: snapshot_01
        state: stopped

Взаимодействовать c QEMU Guest Agent

Включить

- name: Example
  hosts: localhost
  tasks:
    - name: Enable guest agent
      decort_kvmvm:
        # Параметры для авторизации упущены
        id: "{{ vm_id }}"
        guest_agent:
          enabled: true

Выключить

- name: Example
  hosts: localhost
  tasks:
    - name: Disable guest agent
      decort_kvmvm:
        # Параметры для авторизации упущены
        id: "{{ vm_id }}"
        guest_agent:
          enabled: false

Обновить список доступных команд

- name: Example
  hosts: localhost
  tasks:
    - name: Update available guest agent commands
      decort_kvmvm:
        # Параметры для авторизации упущены
        id: "{{ vm_id }}"
        guest_agent:
          update_available_commands: true

Выполнить команду

- name: Example
  hosts: localhost
  tasks:
    - name: Execute guest agent command
      decort_kvmvm:
        # Параметры для авторизации упущены
        id: "{{ vm_id }}"
        guest_agent:
          exec:
            cmd: guest-set-user-password
            args:
              username: user
              password: newPassword

Получение статуса копирования данных из удаляемого снимка на СХД Shared

- name: Example
  hosts: localhost
  tasks:
    - name: Get snapshot merge status
      decort_kvmvm:
        # Параметры для авторизации упущены
        id: "{{ vm_id }}"
        get_snapshot_merge_status: true

Получение статуса клонирования

- name: Example
  hosts: localhost
  tasks:
    - name: Get cloning status
      decort_kvmvm:
        # Параметры для авторизации упущены
        id: "{{ vm_id }}"
        get_cloning_status: true

Отменить клонирование

- name: Example
  hosts: localhost
  tasks:
    - name: Abort cloning
      decort_kvmvm:
        # Параметры для авторизации упущены
        id: "{{ vm_id }}"
        abort_cloning: true

Взаимодействовать с CD-ROM

Вставить диск

- name: Example
  hosts: localhost
  tasks:
    - name: Insert disk
      decort_kvmvm:
        # Параметры для авторизации упущены
        id: "{{ vm_id }}"
        cdrom:
          mode: insert
          image_id: 19

Извлечь диск

- name: Example
  hosts: localhost
  tasks:
    - name: Eject disk
      decort_kvmvm:
        # Параметры для авторизации упущены
        id: "{{ vm_id }}"
        cdrom:
          mode: eject

Изменить

Объём загрузочного диска в большую сторону

- name: Example
  hosts: localhost
  tasks:
    - name: Increase boot disk size
      decort_kvmvm:
        # Параметры для авторизации упущены
        id: "{{ vm_id }}"
        boot:
          disk_size: 15
        state: stopped

Количество ЦП

- name: Example
  hosts: localhost
  tasks:
    - name: Change CPU amount
      decort_kvmvm:
        # Параметры для авторизации упущены
        id: "{{ vm_id }}"
        cpu: 1
        state: stopped

Объём ОЗУ

- name: Example
  hosts: localhost
  tasks:
    - name: Change RAM size
      decort_kvmvm:
        # Параметры для авторизации упущены
        id: "{{ vm_id }}"
        ram: 512
        state: stopped

Тэги

- 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: stopped

Правило NUMA Affinity

- name: Example
  hosts: localhost
  tasks:
    - name: Change NUMA affinity rule
      decort_kvmvm:
        # Параметры для авторизации упущены
        id: "{{ vm_id }}"
        numa_affinity: loose
        state: stopped

Запуск на выделенных ядрах ЦП

- name: Example
  hosts: localhost
  tasks:
    - name: Change CPU Pinning usage
      decort_kvmvm:
        # Параметры для авторизации упущены
        id: "{{ vm_id }}"
        cpu_pin: true
        state: stopped

Использование Huge Pages

- name: Example
  hosts: localhost
  tasks:
    - name: Change Huge Pages usage
      decort_kvmvm:
        # Параметры для авторизации упущены
        id: "{{ vm_id }}"
        hp_backed: true
        state: stopped

Имя

- 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: stopped

Загрузочный диск

- 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: Change boot mode
      decort_kvmvm:
        # Параметры для авторизации упущены
        id: "{{ vm_id }}"
        boot:
          mode: uefi

Тип загрузчика ОС

- name: Example
  hosts: localhost
  tasks:
    - name: Change loader type
      decort_kvmvm:
        # Параметры для авторизации упущены
        id: "{{ vm_id }}"
        boot:
          loader_type: windows

Именование сетевых интерфейсов

- name: Example
  hosts: localhost
  tasks:
    - name: Change network interface naming
      decort_kvmvm:
        # Параметры для авторизации упущены
        id: "{{ vm_id }}"
        network_interface_naming: eth

Поддержку изменения объема ОЗУ и количества ЦП у запущенной ВМ

- name: Example
  hosts: localhost
  tasks:
    - name: Change hot resize support
      decort_kvmvm:
        # Параметры для авторизации упущены
        id: "{{ vm_id }}"
        hot_resize: true

MAC-адрес сетевого интерфейса

- name: Example
  hosts: localhost
  tasks:
    - name: Change network interface MAC address
      decort_kvmvm:
        # Параметры для авторизации упущены
        id: "{{ vm_id }}"
        networks:
          - type: VINS
            id: "{{ vins_id }}"
            mac: "11:22:33:44:55:66"

Зону ВМ

- name: Example
  hosts: localhost
  tasks:
    - name: Change VM zone
      decort_kvmvm:
        # Параметры для авторизации упущены
        id: "{{ vm_id }}"
        zone_id: 2

Порядок загрузки

- name: Example
  hosts: localhost
  tasks:
    - name: Change boot order
      decort_kvmvm:
        # Параметры для авторизации упущены
        id: "{{ vm_id }}"
        boot:
          order:
            - hd
            - network
            - cdrom

Группы безопасности сетевого интерфейса

- name: Example
  hosts: localhost
  tasks:
    - name: Change interface's security groups
      decort_kvmvm:
        # Параметры для авторизации упущены
        id: "{{ vm_id }}"
        networks:
          - type: VINS
            id: "{{ vins_id }}"
            security_group_mode: true
            security_group_ids:
              - "{{ security_group1_id }}"
              - "{{ security_group2_id }}"

Версию операционной системы

- name: Example
  hosts: localhost
  tasks:
    - name: Change VM OS version
      decort_kvmvm:
        # Параметры для авторизации упущены
        id: "{{ vm_id }}"
        os_version: "{{ os_version }}"

Пересоздать загрузочный диск

Без изменения образа

- name: Example
  hosts: localhost
  tasks:
    - name: Redeploy boot disk
      decort_kvmvm:
        # Параметры для авторизации упущены
        id: "{{ vm_id }}"
        storage_policy_id: "{{ storage_policy_id }}"
        boot:
          disk_redeploy: true

С изменением образа

- name: Example
  hosts: localhost
  tasks:
    - name: Redeploy boot disk with image changing
      decort_kvmvm:
        # Параметры для авторизации упущены
        id: "{{ vm_id }}"
        storage_policy_id: "{{ storage_policy_id }}"
        boot:
          disk_redeploy: true
        image_id: "{{ image_id }}"

Удалить

Безвозвратно

- name: Example
  hosts: localhost
  tasks:
    - name: Delete VM
      decort_kvmvm:
        # Параметры для авторизации упущены
        id: "{{ vm_id }}"
        state: absent