community.general.one_vm – Создаёт или завершает экземпляры OpenNebula
Примечание
Этот плагин входит в коллекцию community.general (версия 2.0.1).
Для его установки используйте: 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
псевдонимы: ids | |
| 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 булево |
| Ожидание достижения экземпляром желаемого состояния перед возвратом. Имейте в виду, что если вы ожидаете, что экземпляр будет в состоянии выполнения, это не означает, что вы сможете подключиться к этому компьютеру, только что процесс загрузки был запущен на этом экземпляре, см. пример "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 dictionary | success | Словарь атрибутов ключ/значение, связанных с экземпляром. Пример: {'HYPERVISOR': 'kvm', 'LOGO': 'images/logos/centos.png', 'TE_GALAXY': 'bar', 'USER_INPUTS': None} | |
| cpu float | success | Процент ЦП, деленный на 100. Пример: 0.2 | |
| disk_size string | success | Размер диска в МБ. Пример: 20480 МБ | |
| group_id integer | success | Идентификатор группы ВМ. Пример: 1 | |
| group_name string | success | Имя группы ВМ. Пример: one-users | |
| labels list / elements=string | success | Список строковых меток, связанных с экземпляром. Пример: ['foo', 'spec-label'] | |
| lcm_state string | success | Состояние lcm экземпляра, релевантно только когда состояние ACTIVE. Пример: RUNNING | |
| memory string | success | Размер памяти в МБ. Пример: 4096 МБ | |
| mode string | success | Режим ВМ. Пример: 660 | |
| networks list / elements=string | 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 integer | success | Идентификатор владельца ВМ. Пример: 143 | |
| owner_name string | success | Имя владельца ВМ. Пример: app-user | |
| state string | success | Состояние экземпляра. Пример: ACTIVE | |
| template_id integer | success | Идентификатор шаблона ВМ. Пример: 153 | |
| uptime_h integer | success | Время работы экземпляра в часах. Пример: 35 | |
| vcpu integer | success | Количество ЦП (ядер). Пример: 2 | |
| vm_id integer | success | Идентификатор ВМ. Пример: 153 | |
| vm_name string | success | Имя ВМ. Пример: foo | |
| instances_ids list / elements=string | success | Список идентификаторов экземпляров, состояние которых было изменено или которые были получены с помощью опции instance_ids. Пример: [1234, 1235] | |
| tagged_instances complex | success | Список данных об экземплярах, основанный на определённых атрибутах и/или метках, указанных с помощью опций count_attributes и count_labels. | |
| attributes dictionary | success | Словарь атрибутов ключ/значение, связанных с экземпляром. Пример: {'HYPERVISOR': 'kvm', 'LOGO': 'images/logos/centos.png', 'TE_GALAXY': 'bar', 'USER_INPUTS': None} | |
| cpu float | success | Процент ЦП, деленный на 100. Пример: 0.2 | |
| disk_size list / elements=string | success | Список размеров дисков в МБ. Пример: ['20480 МБ', '10240 МБ'] | |
| group_id integer | success | Идентификатор группы ВМ. Пример: 1 | |
| group_name string | success | Имя группы ВМ. Пример: one-users | |
| labels list / elements=string | success | Список строковых меток, связанных с экземпляром. Пример: ['foo', 'spec-label'] | |
| lcm_state string | success | Состояние lcm экземпляра, релевантно только когда состояние ACTIVE. Пример: RUNNING | |
| memory string | success | Размер памяти в МБ. Пример: 4096 МБ | |
| mode string | success | Режим ВМ. Пример: 660 | |
| networks list / elements=string | 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 integer | success | Идентификатор пользователя ВМ. Пример: 143 | |
| owner_name string | success | Имя пользователя ВМ. Пример: app-user | |
| state string | success | Состояние экземпляра. Пример: ACTIVE | |
| template_id integer | success | Идентификатор шаблона ВМ. Пример: 153 | |
| uptime_h integer | success | Время работы экземпляра в часах. Пример: 35 | |
| vcpu integer | success | Количество ЦП (ядер). Пример: 2 | |
| vm_id integer | success | Идентификатор ВМ. Пример: 153 | |
| vm_name string | success | Имя ВМ. Пример: foo | |
Авторы
- Milan Ilic (@ilicmilan)
- Jan Meerkamp (@meerkampdvv)
© 2012–2018 Michael DeHaan
© 2018–2021 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.11/collections/community/general/one_vm_module.html