one_vm – Создаёт или завершает экземпляры OpenNebula
Новая в версии 2.6.
Описание
- Управляет экземплярами OpenNebula
Требования
Ниже перечислены требования к хосту, на котором будет выполняться этот модуль.
- python-oca
Параметры
| Параметр | Варианты/Значения по умолчанию | Комментарии |
|---|---|---|
| api_password - | Пароль пользователя для входа на сервер OpenNebula RPC. Если не задан, то используется значение переменной окружения ONE_PASSWORD. Если ни api_username, ни api_password не заданы, то будет попытка аутентификации с файлом аутентификации ONE. Путь по умолчанию — "~/.one/one_auth". Переменная окружения ONE_AUTH может быть установлена для переопределения этого пути. | |
| api_url - | URL сервера OpenNebula RPC. Рекомендуется использовать HTTPS, чтобы имя пользователя/пароль не передавались по сети без шифрования. Если не задан, используется значение переменной окружения ONE_URL. | |
| api_username - | Имя пользователя для входа на сервер OpenNebula RPC. Если не задан, то используется значение переменной окружения ONE_USERNAME. | |
| attributes - | По умолчанию: {} | Словарь атрибутов ключ/значение для добавления к новым экземплярам или для установки state экземпляров с этими атрибутами.Ключи регистронезависимы, и OpenNebula автоматически преобразует их в верхний регистр. Обратите внимание, что NAME — это специальный атрибут, который устанавливает имя ВМ при её развертывании.# символы могут быть добавлены к 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 boolean |
| Перезагрузка, выключение или завершение экземпляров hard
|
| instance_ids - | Список идентификаторов экземпляров, используемых для состояний: absent, running, rebooted, poweredoff
псевдонимы: ids | |
| labels - | По умолчанию: [] | Список меток, которые следует ассоциировать с новыми экземплярами, или для установки state экземпляров с этими метками. |
| memory - | Размер оперативной памяти для новых экземпляров (в МБ, ГБ...). | |
| mode - | Установите режим разрешений экземпляра в формате octet, например, 600, чтобы предоставить владельцу use, группе manage и ничего группе и другим. | |
| networks - | По умолчанию: [] | Список словарей с параметрами сети. Для получения более подробной информации см. примеры. |
| owner_id - | ID пользователя, который будет установлен как владелец экземпляра | |
| state - |
| present — создание экземпляров из шаблона, указанного с template_id/template_name. running — запуск экземпляровpoweredoff — выключение экземпляровrebooted — перезагрузка экземпляровabsent — завершение экземпляров |
| template_id - | ID шаблона ВМ, который будет использоваться для создания нового экземпляра | |
| template_name - | Имя шаблона ВМ, которое будет использоваться для создания нового экземпляра | |
| vcpu - | Количество процессоров (ядер), которое будет иметь новая ВМ. | |
| vm_start_on_hold - added in 2.9 | По умолчанию: "нет" | Установите в значение «true», чтобы приостановить ВМ во время создания |
| wait boolean |
| Ожидать, пока экземпляр достигнет желаемого состояния перед возвратом. Имейте в виду, что ожидание экземпляра в состоянии «запущен» не означает, что вы сможете подключиться к этому компьютеру с помощью 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 on hold
- one_vm:
template_name: 'app1_template'
vm_start_on_hold: 'True'
# 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 complex | success | список информации об экземплярах, состояние которых изменено или которые получены с помощью опции instance_ids. | |
| attributes словарь | Словарь атрибутов ключ/значение, связанных с экземпляром. Пример: {'HYPERVISOR': 'kvm', 'LOGO': 'images/logos/centos.png', 'TE_GALAXY': 'bar', 'USER_INPUTS': None} | ||
| cpu float | Процент использования процессора, деленный на 100. Пример: 0.2 | ||
| disk_size строка | Размер диска в МБ. Пример: 20480 МБ | ||
| group_id целое число | Идентификатор группы виртуальной машины. Пример: 1 | ||
| group_name строка | Имя группы виртуальной машины. Пример: one-users | ||
| labels список | Список строковых меток, связанных с экземпляром. Пример: ['foo', 'spec-label'] | ||
| lcm_state строка | Состояние LCM экземпляра, которое актуально только при состоянии ACTIVE. Пример: RUNNING | ||
| memory строка | Размер памяти в МБ. Пример: 4096 МБ | ||
| mode строка | success | Режим виртуальной машины. Пример: 660 | |
| 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'}] | ||
| owner_id целое число | Идентификатор владельца виртуальной машины. Пример: 143 | ||
| owner_name строка | Имя владельца виртуальной машины. Пример: app-user | ||
| state строка | Состояние экземпляра. Пример: ACTIVE | ||
| template_id целое число | Идентификатор шаблона виртуальной машины. Пример: 153 | ||
| uptime_h целое число | Время работы экземпляра в часах. Пример: 35 | ||
| vcpu целое число | Количество процессоров (ядер). Пример: 2 | ||
| vm_id целое число | Идентификатор виртуальной машины. Пример: 153 | ||
| vm_name строка | Имя виртуальной машины. Пример: foo | ||
| instances_ids список | success | Список идентификаторов экземпляров, состояние которых изменено или которые получены с помощью опции instance_ids. Пример: [1234, 1235] | |
| tagged_instances complex | success | Список информации об экземплярах, основанной на определенных атрибутах и/или метках, указанных с помощью опций count_attributes и count_labels. | |
| attributes словарь | Словарь атрибутов ключ/значение, связанных с экземпляром. Пример: {'HYPERVISOR': 'kvm', 'LOGO': 'images/logos/centos.png', 'TE_GALAXY': 'bar', 'USER_INPUTS': None} | ||
| cpu float | Процент использования процессора, деленный на 100. Пример: 0.2 | ||
| disk_size строка | Размер диска в МБ. Пример: 20480 МБ | ||
| group_id целое число | Идентификатор группы виртуальной машины. Пример: 1 | ||
| group_name строка | Имя группы виртуальной машины. Пример: one-users | ||
| labels список | Список строковых меток, связанных с экземпляром. Пример: ['foo', 'spec-label'] | ||
| lcm_state строка | Состояние LCM экземпляра, которое актуально только при состоянии ACTIVE. Пример: RUNNING | ||
| режим строка | успех | режим виртуальной машины Пример: 660 | |
| сети список | список словарей с информацией об 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'}] | ||
| id_пользователя целое число | ID пользователя виртуальной машины Пример: 143 | ||
| имя_пользователя строка | имя пользователя виртуальной машины Пример: app-user | ||
| состояние строка | состояние экземпляра Пример: ACTIVE | ||
| id_шаблона целое число | ID шаблона виртуальной машины Пример: 153 | ||
| время_работы_ч целое число | Время работы экземпляра в часах Пример: 35 | ||
| vcpu целое число | Количество процессоров (ядер) Пример: 2 | ||
| id_vm целое число | ID виртуальной машины Пример: 153 | ||
| имя_vm строка | имя виртуальной машины Пример: foo |
Статус
- Этот модуль не гарантирует обратной совместимости интерфейса. [превью]
- Этот модуль поддерживается сообществом 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.9/modules/one_vm_module.html