one_vm – Создаёт или завершает виртуальные машины OpenNebula
Новая версия с 2.6.
Обзор
- Управляет виртуальными машинами OpenNebula
Требования
Ниже перечислены требования, необходимые на хосте, на котором будет выполняться этот модуль.
- python-oca
Параметры
| Параметр | Варианты/Значения по умолчанию | Комментарии |
|---|---|---|
| api_password - | Пароль пользователя для входа на сервер RPC OpenNebula. Если не указан, то используется значение переменной окружения ONE_PASSWORD. Если оба api_username и api_password не указаны, то будет попытка аутентификации с помощью файла ONE auth. Путь по умолчанию — "~/.one/one_auth". Установите переменную окружения ONE_AUTH, чтобы переопределить этот путь. | |
| api_url - | URL сервера RPC OpenNebula. Рекомендуется использовать HTTPS, чтобы имя пользователя/пароль не передавались по сети без шифрования. Если не указан, то используется значение переменной окружения ONE_URL. | |
| api_username - | Имя пользователя для входа на сервер RPC OpenNebula. Если не указан, то используется значение переменной окружения 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 параметрам, должно быть развернуто. Экземпляры создаются или удаляются на основе этого значения.ПРИМЕЧАНИЕ':' Экземпляры с наименьшими идентификаторами будут удаляться в первую очередь. | |
| group_id - | Идентификатор группы, который будет установлен в качестве группы экземпляра | |
| hard boolean |
| Перезагрузить, выключить или завершить экземпляры hard
|
| instance_ids - | Список идентификаторов экземпляров, используемых для состояний':' absent, running, rebooted, poweredoff
псевдонимы: ids | |
| labels - | Значение по умолчанию: [] | Список меток для ассоциации с новыми экземплярами или для установки state экземпляров с этими метками. |
| memory - | Размер памяти для новых экземпляров (в МБ, ГБ и т. д.) | |
| mode - | Установите режим разрешения экземпляра в формате октетов, например, 600 для предоставления владельцу use и manage и ничего группе и другим. | |
| networks - | Значение по умолчанию: [] | Список словарей с параметрами сети. Подробнее см. в примерах. |
| owner_id - | Идентификатор пользователя, который будет установлен в качестве владельца экземпляра | |
| state - |
| present — создание экземпляров из шаблона, указанного с template_id/template_name. running — запуск экземпляровpoweredoff — выключение экземпляровrebooted — перезагрузка экземпляровabsent — завершение экземпляров |
| template_id - | Идентификатор шаблона виртуальной машины, который используется для создания нового экземпляра | |
| template_name - | Имя шаблона виртуальной машины, используемого для создания нового экземпляра | |
| vcpu - | Количество ЦП (ядер) у новой виртуальной машины. | |
| wait boolean |
| Ожидание достижения экземпляром желаемого состояния перед возвратом. Имейте в виду, что ожидание экземпляра в состоянии "running" не означает, что вы сможете подключиться к этому компьютеру, только что процесс загрузки начался на этом экземпляре, см. пример "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 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 | ||
| memory строка | Размер памяти в МБ Пример: 4096 МБ | ||
| mode строка | success | Режим виртуальной машины Пример: 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'}] | ||
| owner_id целое число | идентификатор пользователя ВМ Пример: 143 | ||
| owner_name строка | имя пользователя ВМ Пример: app-user | ||
| состояние строка | состояние экземпляра Пример: ACTIVE | ||
| template_id целое число | идентификатор шаблона ВМ Пример: 153 | ||
| uptime_h целое число | Время работы экземпляра в часах Пример: 35 | ||
| vcpu целое число | Количество ЦП (ядер) Пример: 2 | ||
| vm_id целое число | идентификатор ВМ Пример: 153 | ||
| vm_name строка | имя ВМ Пример: 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.8/modules/one_vm_module.html