one_vm - Создаёт или завершает экземпляры OpenNebula
Новое в версии 2.6.
Синопсис
- Управляет экземплярами OpenNebula
Требования
Ниже перечислены требования к хосту, на котором будет выполняться этот модуль.
- python-oca
Параметры
| Параметр | Варианты/Значения по умолчанию | Комментарии |
|---|---|---|
| api_password | Пароль пользователя для входа в сервер RPC OpenNebula. Если не задано | |
| 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. | |
| disk_saveas | Создаёт образ диска виртуальной машины. Это словарь, где вы должны указать name нового образа.По желанию вы можете указать disk_id диска, который вы хотите сохранить. По умолчанию disk_id равно 0.
ПРИМЕЧАНИЕ':' Эта операция будет выполнена только для первой виртуальной машины (если передано более одного идентификатора виртуальной машины) и виртуальная машина должна быть в состоянии poweredoff.Эта операция также завершится ошибкой, если образ с указанным name уже существует. | |
| disk_size | Размер диска, создаваемого для новых экземпляров (в МБ, ГБ, ТБ и т. д.). ПРИМЕЧАНИЕ':' Этот параметр может быть использован только в том случае, если шаблон виртуальной машины, указанный с template_id/template_name имеет ровно один диск. | |
| exact_count | Указывает, сколько экземпляров, которые соответствуют count_attributes иcount_labels параметрам, следует развернуть. Экземпляры создаются или удаляются на основе этого значения.ПРИМЕЧАНИЕ':' Экземпляры с наименьшими ID будут удалены в первую очередь. | |
| group_id | ID группы, которая будет установлена как группа экземпляра | |
| hard bool |
| Перезагрузка, выключение или завершение экземпляров hard
|
| instance_ids | Список идентификаторов экземпляров, используемых для состояний':' absent, running, rebooted, poweredoff
псевдонимы: id | |
| labels | По умолчанию: [] | Список меток для ассоциации с новыми экземплярами, или для установки state этих меток. |
| memory | Объём памяти для новых экземпляров (в МБ, ГБ и т. д.) | |
| mode | Установить разрешения на доступ к экземпляру в формате октетов, например, 600 для предоставления владельцу use и manage и ничего группе и другим. | |
| networks | По умолчанию: [] | Список словарей с параметрами сети. Подробнее см. в примерах. |
| owner_id | ID пользователя, который будет установлен как владелец экземпляра | |
| state |
| present - создание экземпляров из шаблона, указанного с template_id/template_name.running - запуск экземпляровpoweredoff - выключение экземпляровrebooted - перезагрузка экземпляровabsent - завершение экземпляров |
| template_id | ID шаблона виртуальной машины для создания нового экземпляра | |
| template_name | Имя шаблона виртуальной машины для создания нового экземпляра | |
| vcpu | Количество ЦП (ядер), которое будет иметь новая виртуальная машина. | |
| wait bool |
| Ожидать, пока экземпляр достигнет желаемого состояния, прежде чем возвращать результат. Имейте в виду, что если вы ожидаете, что экземпляр будет в рабочем состоянии, это не означает, что вы сможете подключиться к этому компьютеру SSH, а только то, что на этом экземпляре начался процесс загрузки. Подробнее см. пример с 'wait_for'. |
| wait_timeout | По умолчанию: 300 | Время ожидания, прежде чем ожидание будет прервано, в секундах |
Примеры
# Create a new instance
- one_vm:
template_id: 90
register: result
# Print VM properties
- debug:
msg: result
# Deploy a new VM and set its name to 'foo'
- one_vm:
template_name: 'app1_template'
attributes:
name: foo
# Deploy a new VM and set its group_id and mode
- one_vm:
template_id: 90
group_id: 16
mode: 660
# Change VM's permissions to 640
- one_vm:
instance_ids: 5
mode: 640
# Deploy 2 new instances and set memory, vcpu, disk_size and 3 networks
- 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"
# Deploy an new instance with attribute 'bar: bar1' and set its name to 'foo'
- one_vm:
template_id: 53
attributes:
name: foo
bar: bar1
# Enforce that 2 instances with attributes 'foo1: app1' and 'foo2: app2' are deployed
- one_vm:
template_id: 53
attributes:
foo1: app1
foo2: app2
exact_count: 2
count_attributes:
foo1: app1
foo2: app2
# Enforce that 4 instances with an attribute 'bar' are deployed
- 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
- 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
- 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
- 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
- one_vm:
template_id: 53
exact_count: 1
count_attributes:
name: fooapp-#
# Deploy an new instance with a network
- one_vm:
template_id: 53
networks:
- NETWORK_ID: 27
register: vm
# Wait for SSH to come up
- wait_for_connection:
delegate_to: '{{ vm.instances[0].networks[0].ip }}'
# Terminate VMs by ids
- one_vm:
instance_ids:
- 153
- 160
state: absent
# Reboot all VMs that have labels 'foo' and 'app1'
- one_vm:
labels:
- foo
- app1
state: rebooted
# Fetch all VMs that have name 'foo' and attribute 'app: bar'
- one_vm:
attributes:
name: foo
app: bar
register: results
# Deploy 2 new instances with labels 'foo1' and 'foo2'
- one_vm:
template_name: app_template
labels:
- foo1
- foo2
count: 2
# Enforce that only 1 instance with label 'foo1' will be running
- one_vm:
template_name: app_template
labels:
- foo1
exact_count: 1
count_labels:
- foo1
# Terminate all instances that have attribute foo
- one_vm:
template_id: 53
exact_count: 0
count_attributes:
foo:
# Power-off the VM and save VM's disk with id=0 to the image with name 'foo-image'
- one_vm:
instance_ids: 351
state: powered-off
disk_saveas:
name: foo-image
# Save VM's disk with id=1 to the image with name 'bar-image'
- one_vm:
instance_ids: 351
disk_saveas:
name: bar-image
disk_id: 1
Значения возврата
Общие значения возврата описаны здесь, следующие — это поля, уникальные для этого модуля:
| Ключ | Возвращаемое значение | Описание | |
|---|---|---|---|
| instances сложный тип | успешно | список информации об экземплярах, состояние которых изменилось или которые были получены с помощью опции instance_ids. | |
| vm_id целое число | id виртуальной машины Пример: 153 | ||
| vm_name строка | имя виртуальной машины Пример: foo | ||
| template_id целое число | id шаблона виртуальной машины Пример: 153 | ||
| group_id целое число | id группы виртуальной машины Пример: 1 | ||
| group_name строка | имя группы виртуальной машины Пример: one-users | ||
| owner_id целое число | id владельца виртуальной машины Пример: 143 | ||
| owner_name строка | имя владельца виртуальной машины Пример: app-user | ||
| mode строка | успешно | режим виртуальной машины Пример: 660 | |
| state строка | состояние экземпляра Пример: ACTIVE | ||
| lcm_state строка | состояние LCM экземпляра, релевантное только когда состояние равно ACTIVE Пример: RUNNING | ||
| cpu вещественное число | Процент использования ЦП, разделенный на 100 Пример: 0.2 | ||
| vcpu целое число | Количество ЦП (ядер) Пример: 2 | ||
| memory строка | Размер памяти в МБ Пример: 4096 МБ | ||
| disk_size строка | Размер диска в МБ Пример: 20480 МБ | ||
| networks список | список словарей с информацией об 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'}] | ||
| uptime_h целое число | Время работы экземпляра в часах Пример: 35 | ||
| labels список | список строковых меток, связанных с экземпляром Пример: ['foo', 'spec-label'] | ||
| attributes словарь | словарь атрибутов ключ/значение, связанных с экземпляром Пример: {'HYPERVISOR': 'kvm', 'LOGO': 'images/logos/centos.png', 'TE_GALAXY': 'bar', 'USER_INPUTS': None} | ||
| instances_ids список | успешно | список идентификаторов экземпляров, состояние которых изменилось или которые были получены с помощью опции instance_ids. Пример: [1234, 1235] | |
| tagged_instances сложный тип | успешно | список информации об экземплярах, основанной на определённых атрибутах и/или метках, указанных с помощью опций count_attributes и count_labels. | |
| vm_id целое число | id виртуальной машины Пример: 153 | ||
| vm_name строка | имя виртуальной машины Пример: foo | ||
| template_id целое число | id шаблона виртуальной машины Пример: 153 | ||
| group_id целое число | id группы виртуальной машины Пример: 1 | ||
| group_name строка | имя группы виртуальной машины Пример: one-users | ||
| owner_id целое число | идентификатор пользователя ВМ Пример: 143 | ||
| owner_name строка | имя пользователя ВМ Пример: app-user | ||
| mode строка | успешно | режим ВМ Пример: 660 | |
| state строка | состояние экземпляра Пример: ACTIVE | ||
| lcm_state строка | состояние LCM экземпляра, релевантное только когда состояние равно ACTIVE Пример: RUNNING | ||
| cpu float | Процент ЦП, делённый на 100 Пример: 0.2 | ||
| vcpu int | Количество ЦП (ядер) Пример: 2 | ||
| memory string | Объём памяти в МБ Пример: 4096 МБ | ||
| disk_size string | Объём диска в МБ Пример: 20480 МБ | ||
| networks list | Список словарей с информацией об 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'}] | ||
| uptime_h integer | Время работы экземпляра в часах Пример: 35 | ||
| labels list | Список строковых меток, связанных с экземпляром Пример: ['foo', 'spec-label'] | ||
| attributes dict | Словарь атрибутов ключ/значение, связанных с экземпляром Пример: {'HYPERVISOR': 'kvm', 'LOGO': 'images/logos/centos.png', 'TE_GALAXY': 'bar', 'USER_INPUTS': None} |
Статус
Этот модуль помечен как превью, что означает отсутствие гарантии обратной совместимости интерфейса.
Техническое обслуживание
Этот модуль помечен как сообщество, что означает, что он поддерживается сообществом Ansible. Более подробную информацию см. в разделе по поддержке и обслуживанию модулей.
Список других модулей, поддерживаемых сообществом Ansible, см. здесь.
Автор
- Milan Ilic (@ilicmilan)
Подсказка
Если вы заметите какие-либо проблемы в данной документации, вы можете отредактировать этот документ для его улучшения.
© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.6/modules/one_vm_module.html