community.general.one_vm – Создаёт или завершает виртуальные машины OpenNebula
Примечание
Этот плагин входит в коллекцию community.general (версия 1.3.2).
Для его установки используйте: ansible-galaxy collection install community.general.
Для использования в книге задач укажите: community.general.one_vm.
Описание
- Управление виртуальными машинами OpenNebula
Требования
Ниже перечислены требования, необходимые на хосте, на котором будет выполняться этот модуль.
- pyone
Параметры
| Параметр | Варианты/Значения по умолчанию | Комментарии |
|---|---|---|
| api_password строка | Пароль пользователя для входа в сервер RPC OpenNebula. Если не задан, используется значение переменной среды ONE_PASSWORD. Если оба параметра api_username или api_password не заданы, то будет попытка аутентификации с файлом авторизации ONE. Путь по умолчанию "~/.one/one_auth". Для переопределения этого пути задайте переменную среды ONE_AUTH. | |
| api_url строка | URL сервера RPC OpenNebula. Рекомендуется использовать HTTPS, чтобы имя пользователя/пароль не передавались по сети без шифрования. Если не задан, используется значение переменной среды ONE_URL. | |
| api_username строка | Имя пользователя для входа на сервер RPC OpenNebula. Если не задан, используется значение переменной среды ONE_USERNAME. | |
| attributes словарь | По умолчанию: {} | Словарь атрибутов ключ/значение для добавления к новым виртуальным машинам или для установки атрибутов существующих виртуальных машин. Ключи нечувствительны к регистру, и OpenNebula автоматически преобразует их в верхний регистр. Обратите внимание, что state — это специальный атрибут, устанавливающий имя ВМ при развертывании.# символ(ов) может быть добавлен к NAME и модуль автоматически добавитиндексы к именам ВМ. Например,':' NAME':' foo-### создаст ВМ с именами foo-000, foo-001,...При использовании с count_attributes и exact_count модуль будетсопоставлять базовое имя без части индекса. |
| count целое число | По умолчанию: 1 | Количество виртуальных машин для запуска |
| count_attributes словарь | Словарь атрибутов ключ/значение, которые могут быть использованы только с exact_count для определения количества узлов на основе критериев определённыхатрибутами. Это можно выразить несколькими способами, как показано в разделе ПРИМЕРЫ. | |
| count_labels список / элементы=строка | Список меток, которые могут быть использованы только с exact_count для определенияколичества узлов на основе критериев, определённых метками. Это можно выразить несколькими способами, как показано в разделе ПРИМЕРЫ. | |
| cpu вещественное число | Процент ЦП, требуемый для новой виртуальной машины, делённый на 100. Половина процессора записывается как 0,5. | |
| datastore_id целое число добавлен в 0.2.0 community.general | Имя хранилища для создания новой виртуальной машины | |
| datastore_name строка добавлен в 0.2.0 community.general | Имя хранилища для создания новой виртуальной машины | |
| disk_saveas словарь | Создаёт образ из диска ВМ. Это словарь, где необходимо указать name нового образа.Можно также указать disk_id диска, который нужно сохранить. По умолчанию disk_id равно 0.
ПРИМЕЧАНИЕ':' Эта операция будет выполнена только для первой ВМ (если передано более одного идентификатора ВМ) и ВМ должна быть в состоянии poweredoff. Также эта операция завершится ошибкой, если образ с указанным name уже существует. | |
| disk_size список / элементы=строка | Размер диска, создаваемого для новых виртуальных машин (в МБ, ГБ, ТБ...). ПРИМЕЧАНИЕ':' Если шаблон имеет несколько дисков, порядок размеров должен соответствовать порядку, указанному в template_id/template_name. | |
| exact_count целое число | Указывает количество виртуальных машин, которые соответствуют count_attributes иcount_labels параметрам, которые нужно развернуть. Виртуальные машины создаются или удаляются на основе этого значения.ПРИМЕЧАНИЕ':' Виртуальные машины с наименьшими идентификаторами будут удалены первыми. | |
| group_id целое число | Идентификатор группы, который будет задан как группа виртуальной машины | |
| hard булево |
| Перезагрузка, выключение или завершение виртуальных машин hard
|
| instance_ids список / элементы=строка | Список идентификаторов виртуальных машин, используемых для состояний':' absent, running, rebooted, poweredoff
псевдонимы: id | |
| labels список / элементы=строка | По умолчанию: [] | Список меток для ассоциации с новыми виртуальными машинами или для установки state виртуальных машин с этими метками. |
| memory строка | Размер памяти для новых виртуальных машин (в МБ, ГБ, ...) | |
| mode строка | Установить режим доступа виртуальной машины в формате октетов, например 600 для предоставления владельцу use и manage и ничего группе и другим. | |
| networks список / элементы=строка | По умолчанию: [] | Список словарей с параметрами сети. Подробнее см. примеры. |
| owner_id целое число | Идентификатор пользователя, который будет задан как владелец виртуальной машины | |
| persistent булево добавлен в 0.2.0 community.general |
| Создать приватную постоянную копию шаблона плюс любой образ, определённый в DISK, и создать экземпляр этой копии. |
| state строка |
| present - создание виртуальных машин из шаблона, указанного с template_id/template_name. running - запуск виртуальных машинpoweredoff - выключение виртуальных машинrebooted - перезагрузка виртуальных машинabsent - завершение виртуальных машин |
| template_id целое число | Идентификатор шаблона ВМ для создания новой виртуальной машины | |
| template_name строка | Имя шаблона ВМ для создания новой виртуальной машины | |
| vcpu целое число | Количество ЦП (ядер) у новой ВМ. | |
| vm_start_on_hold булево |
| Установите в true, чтобы приостановить ВМ во время создания |
| wait булево |
| Подождать, пока виртуальная машина достигнет желаемого состояния, прежде чем возвращаться. Имейте в виду, что если вы ждёте, пока виртуальная машина будет в рабочем состоянии, это не означает, что вы сможете подключиться к ней по SSH, только что процесс загрузки начался на этой виртуальной машине, см. пример 'wait_for' для получения подробностей. |
| wait_timeout целое число | По умолчанию: 300 | Время ожидания, прежде чем ожидание будет прервано, в секундах |
Примеры
- name: Create a new instance
community.general.one_vm:
template_id: 90
register: result
- name: Print VM properties
ansible.builtin.debug:
msg: result
- name: Deploy a new VM on hold
community.general.one_vm:
template_name: 'app1_template'
vm_start_on_hold: 'True'
- name: Deploy a new VM and set its name to 'foo'
community.general.one_vm:
template_name: 'app1_template'
attributes:
name: foo
- name: Deploy a new VM and set its group_id and mode
community.general.one_vm:
template_id: 90
group_id: 16
mode: 660
- name: Deploy a new VM as persistent
community.general.one_vm:
template_id: 90
persistent: yes
- name: Change VM's permissions to 640
community.general.one_vm:
instance_ids: 5
mode: 640
- name: Deploy 2 new instances and set memory, vcpu, disk_size and 3 networks
community.general.one_vm:
template_id: 15
disk_size: 35.2 GB
memory: 4 GB
vcpu: 4
count: 2
networks:
- NETWORK_ID: 27
- NETWORK: "default-network"
NETWORK_UNAME: "app-user"
SECURITY_GROUPS: "120,124"
- NETWORK_ID: 27
SECURITY_GROUPS: "10"
- name: Deploy a new instance which uses a Template with two Disks
community.general.one_vm:
template_id: 42
disk_size:
- 35.2 GB
- 50 GB
memory: 4 GB
vcpu: 4
count: 1
networks:
- NETWORK_ID: 27
- name: "Deploy an new instance with attribute 'bar: bar1' and set its name to 'foo'"
community.general.one_vm:
template_id: 53
attributes:
name: foo
bar: bar1
- name: "Enforce that 2 instances with attributes 'foo1: app1' and 'foo2: app2' are deployed"
community.general.one_vm:
template_id: 53
attributes:
foo1: app1
foo2: app2
exact_count: 2
count_attributes:
foo1: app1
foo2: app2
- name: Enforce that 4 instances with an attribute 'bar' are deployed
community.general.one_vm:
template_id: 53
attributes:
name: app
bar: bar2
exact_count: 4
count_attributes:
bar:
# Deploy 2 new instances with attribute 'foo: bar' and labels 'app1' and 'app2' and names in format 'fooapp-##'
# Names will be: fooapp-00 and fooapp-01
- name: Deploy 2 new instances
community.general.one_vm:
template_id: 53
attributes:
name: fooapp-##
foo: bar
labels:
- app1
- app2
count: 2
# Deploy 2 new instances with attribute 'app: app1' and names in format 'fooapp-###'
# Names will be: fooapp-002 and fooapp-003
- name: Deploy 2 new instances
community.general.one_vm:
template_id: 53
attributes:
name: fooapp-###
app: app1
count: 2
# Reboot all instances with name in format 'fooapp-#'
# Instances 'fooapp-00', 'fooapp-01', 'fooapp-002' and 'fooapp-003' will be rebooted
- name: Reboot all instances with names in a certain format
community.general.one_vm:
attributes:
name: fooapp-#
state: rebooted
# Enforce that only 1 instance with name in format 'fooapp-#' is deployed
# The task will delete oldest instances, so only the 'fooapp-003' will remain
- name: Enforce that only 1 instance with name in a certain format is deployed
community.general.one_vm:
template_id: 53
exact_count: 1
count_attributes:
name: fooapp-#
- name: Deploy an new instance with a network
community.general.one_vm:
template_id: 53
networks:
- NETWORK_ID: 27
register: vm
- name: Wait for SSH to come up
ansible.builtin.wait_for_connection:
delegate_to: '{{ vm.instances[0].networks[0].ip }}'
- name: Terminate VMs by ids
community.general.one_vm:
instance_ids:
- 153
- 160
state: absent
- name: Reboot all VMs that have labels 'foo' and 'app1'
community.general.one_vm:
labels:
- foo
- app1
state: rebooted
- name: "Fetch all VMs that have name 'foo' and attribute 'app: bar'"
community.general.one_vm:
attributes:
name: foo
app: bar
register: results
- name: Deploy 2 new instances with labels 'foo1' and 'foo2'
community.general.one_vm:
template_name: app_template
labels:
- foo1
- foo2
count: 2
- name: Enforce that only 1 instance with label 'foo1' will be running
community.general.one_vm:
template_name: app_template
labels:
- foo1
exact_count: 1
count_labels:
- foo1
- name: Terminate all instances that have attribute foo
community.general.one_vm:
template_id: 53
exact_count: 0
count_attributes:
foo:
- name: "Power-off the VM and save VM's disk with id=0 to the image with name 'foo-image'"
community.general.one_vm:
instance_ids: 351
state: poweredoff
disk_saveas:
name: foo-image
- name: "Save VM's disk with id=1 to the image with name 'bar-image'"
community.general.one_vm:
instance_ids: 351
disk_saveas:
name: bar-image
disk_id: 1
Возвращаемые значения
Общие возвращаемые значения описаны здесь, следующие поля уникальны для этого модуля:
| Ключ | Возвращаемое значение | Описание | |
|---|---|---|---|
| instances complex | success | список информации об экземплярах, состояние которых изменено или которые получены с параметром instance_ids. | |
| attributes словарь | success | Словарь атрибутов ключ/значение, связанных с экземпляром. Пример: {'HYPERVISOR': 'kvm', 'LOGO': 'images/logos/centos.png', 'TE_GALAXY': 'bar', 'USER_INPUTS': None} | |
| cpu вещественное число | success | Процент использования процессора, делённый на 100. Пример: 0.2 | |
| disk_size строка | success | Размер диска в МБ. Пример: 20480 МБ | |
| group_id целое число | success | Идентификатор группы виртуальной машины. Пример: 1 | |
| group_name строка | success | Имя группы виртуальной машины. Пример: one-users | |
| labels список / элементы=строка | success | Список строковых меток, связанных с экземпляром. Пример: ['foo', 'spec-label'] | |
| lcm_state строка | success | Состояние LCM экземпляра, относящееся только к активному состоянию. Пример: RUNNING | |
| memory строка | success | Размер оперативной памяти в МБ. Пример: 4096 МБ | |
| mode строка | success | Режим виртуальной машины. Пример: 660 | |
| networks список / элементы=строка | success | Список словарей с информацией об IP, имени, MAC-адресе и группах безопасности для каждого сетевого интерфейса. Пример: [{'ip': '10.120.5.33', 'mac': '02:00:0a:78:05:21', 'name': 'default-test-private', 'security_groups': '0,10'}, {'ip': '10.120.5.34', 'mac': '02:00:0a:78:05:22', 'name': 'default-test-private', 'security_groups': '0'}] | |
| owner_id целое число | success | Идентификатор владельца виртуальной машины. Пример: 143 | |
| owner_name строка | success | Имя владельца виртуальной машины. Пример: app-user | |
| state строка | success | Состояние экземпляра. Пример: ACTIVE | |
| template_id целое число | success | Идентификатор шаблона виртуальной машины. Пример: 153 | |
| uptime_h целое число | success | Время работы экземпляра в часах. Пример: 35 | |
| vcpu целое число | success | Количество процессоров (ядер). Пример: 2 | |
| vm_id целое число | success | Идентификатор виртуальной машины. Пример: 153 | |
| vm_name строка | success | Имя виртуальной машины. Пример: foo | |
| instances_ids список / элементы=строка | success | список идентификаторов экземпляров, состояние которых изменено или которые получены с параметром instance_ids. Пример: [1234, 1235] | |
| tagged_instances complex | success | Список информации об экземплярах, основанной на определённых атрибутах и/или метках, указанных в параметрах count_attributes и count_labels. | |
| attributes словарь | success | Словарь атрибутов ключ/значение, связанных с экземпляром. Пример: {'HYPERVISOR': 'kvm', 'LOGO': 'images/logos/centos.png', 'TE_GALAXY': 'bar', 'USER_INPUTS': None} | |
| cpu вещественное число | success | Процент использования процессора, делённый на 100. Пример: 0.2 | |
| disk_size список / элементы=строка | success | Список размеров дисков в МБ. Пример: ['20480 МБ', '10240 МБ'] | |
| group_id целое число | success | Идентификатор группы виртуальной машины. Пример: 1 | |
| group_name строка | success | Имя группы виртуальной машины. Пример: one-users | |
| labels список / элементы=строка | success | Список строковых меток, связанных с экземпляром. Пример: ['foo', 'spec-label'] | |
| lcm_state строка | success | Состояние LCM экземпляра, относящееся только к активному состоянию. Пример: RUNNING | |
| memory строка | success | Размер оперативной памяти в МБ. Пример: 4096 МБ | |
| mode строка | success | Режим виртуальной машины. Пример: 660 | |
| networks список / элементы=строка | success | Список словарей с информацией об IP, имени, MAC-адресе и группах безопасности для каждого сетевого интерфейса. Пример: [{'ip': '10.120.5.33', 'mac': '02:00:0a:78:05:21', 'name': 'default-test-private', 'security_groups': '0,10'}, {'ip': '10.120.5.34', 'mac': '02:00:0a:78:05:22', 'name': 'default-test-private', 'security_groups': '0'}] | |
| owner_id целое число | success | Идентификатор пользователя виртуальной машины. Пример: 143 | |
| owner_name строка | success | Имя пользователя виртуальной машины. Пример: app-user | |
| state строка | success | Состояние экземпляра. Пример: ACTIVE | |
| template_id целое число | success | Идентификатор шаблона виртуальной машины. Пример: 153 | |
| uptime_h целое число | success | Время работы экземпляра в часах. Пример: 35 | |
| vcpu целое число | success | Количество процессоров (ядер). Пример: 2 | |
| vm_id целое число | success | Идентификатор виртуальной машины. Пример: 153 | |
| vm_name строка | success | Имя виртуальной машины. Пример: foo | |
Авторы
- Milan Ilic (@ilicmilan)
- Jan Meerkamp (@meerkampdvv)
© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.10/collections/community/general/one_vm_module.html