community.general.one_vm модуль — Создает или завершает виртуальные машины OpenNebula
Примечание
Этот модуль является частью коллекции community.general (версия 9.5.0).
У вас, возможно, уже установлена эта коллекция, если вы используете пакет ansible. Она не включена в ansible-core. Чтобы проверить, установлена ли она, выполните ansible-galaxy collection list.
Чтобы установить её, используйте: ansible-galaxy collection install community.general. Для использования этого модуля необходимы дополнительные требования, см. Требования для получения подробностей.
Чтобы использовать его в плейбуке, укажите: community.general.one_vm.
Описание
- Управление виртуальными машинами OpenNebula
Требования
Ниже перечислены требования, которые должны быть выполнены на хосте, на котором выполняется этот модуль.
- pyone
Параметры
Параметр | Комментарии |
|---|---|
api_password string | Пароль пользователя для входа на сервер OpenNebula RPC. Если не задан, используется значение переменной окружения Задайте переменную окружения |
api_url string | URL сервера OpenNebula RPC. Рекомендуется использовать HTTPS, чтобы имя пользователя/пароль не передавались по сети в незашифрованном виде. Если не задан, используется значение переменной окружения |
api_username string | Имя пользователя для входа на сервер OpenNebula RPC. Если не задано, используется значение переменной окружения |
attributes dictionary | Словарь атрибутов ключ/значение для добавления к новым экземплярам или для установки Регистр ключей не учитывается, и OpenNebula автоматически преобразует их в верхний регистр. Обратите внимание, что
Например, ‘:’ При использовании с По умолчанию: |
count integer | Количество экземпляров для запуска По умолчанию: |
count_attributes dictionary | Словарь атрибутов ключ/значение, которые могут использоваться только с |
count_labels list / elements=string | Список меток, которые могут использоваться только с |
cpu float | Процент процессора, деленный на 100, необходимый для нового экземпляра. Половина процессора записывается как 0,5. |
datastore_id integer добавлено в community.general 0.2.0 | Имя хранилища данных, которое будет использоваться для создания нового экземпляра |
datastore_name string добавлено в community.general 0.2.0 | Имя хранилища данных, которое будет использоваться для создания нового экземпляра |
disk_saveas dictionary | Создает образ из диска виртуальной машины. Это словарь, в котором необходимо указать Необязательно можно указать ПРИМЕЧАНИЕ: Эта операция будет выполнена только для первой виртуальной машины (если передано более одного ID виртуальной машины), и виртуальная машина должна находиться в состоянии Также эта операция завершится неудачей, если образ с указанным |
disk_size list / elements=string | Размер создаваемого диска для новых экземпляров (в MB, GB, TB,…). ПРИМЕЧАНИЕ: Если шаблон имеет несколько дисков, порядок размеров сопоставляется с порядком, указанным в |
exact_count integer | Указывает, сколько экземпляров, соответствующих параметрам ПРИМЕЧАНИЕ: Экземпляры с наименьшими ID будут завершены в первую очередь. |
group_id integer | ID группы, которая будет установлена в качестве группы экземпляра |
hard boolean | Перезагрузка, выключение или завершение работы экземпляров Варианты:
|
instance_ids псевдонимы: ids list / elements=integer | Список ID экземпляров, используемых для состояний: |
labels list / elements=string | Список меток для ассоциирования с новыми экземплярами или для установки По умолчанию: |
memory string | Размер памяти для новых экземпляров (в MB, GB, …) |
mode строка | Установите разрешения на доступ к экземпляру в формате octet, например |
networks список / элементы=словарь | Список словарей с параметрами сети. Для получения дополнительной информации см. примеры. По умолчанию: |
owner_id целое число | Идентификатор пользователя, который будет назначен владельцем экземпляра. |
persistent булево добавлен в community.general 0.2.0 | Создать частную постоянную копию шаблона плюс любой образ, определенный в DISK, и создать экземпляр этой копии. Варианты:
|
state строка |
Варианты:
|
template_id целое число | Идентификатор шаблона виртуальной машины для создания нового экземпляра. |
template_name строка | Имя шаблона виртуальной машины для создания нового экземпляра. |
updateconf словарь добавлен в community.general 6.3.0 | При наличии При создании новых виртуальных машин эмулирует вызов API Позволяет полностью изменять атрибут |
vcpu целое число | Количество ЦП (ядер) у новой виртуальной машины. |
vm_start_on_hold булево | Установите в значение true, чтобы приостановить виртуальную машину во время создания. Варианты:
|
wait булево | Ожидать, пока экземпляр достигнет желаемого состояния, прежде чем возвращаться. Имейте в виду, что если вы ожидаете, что экземпляр будет в состоянии выполнения, это не означает, что вы сможете подключиться к нему через SSH, только что начался процесс загрузки этого экземпляра, см. пример «wait_for» для получения подробностей. Варианты:
|
wait_timeout целое число | Сколько времени ожидание будет ждать, в секундах По умолчанию: |
Атрибуты
Атрибут | Поддержка | Описание |
|---|---|---|
check_mode | Поддержка: полная | Может работать в |
diff_mode | Поддержка: отсутствует | При режиме diff вернет подробную информацию о том, что изменилось (или, возможно, должно измениться в |
Примеры
- 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: true
- 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
- name: "Deploy 2 new instances with a custom 'start script'"
community.general.one_vm:
template_name: app_template
count: 2
updateconf:
CONTEXT:
START_SCRIPT: ip r r 169.254.16.86/32 dev eth0
- name: "Add a custom 'start script' to a running VM"
community.general.one_vm:
instance_ids: 351
updateconf:
CONTEXT:
START_SCRIPT: ip r r 169.254.16.86/32 dev eth0
- name: "Update SSH public keys inside the VM's context"
community.general.one_vm:
instance_ids: 351
updateconf:
CONTEXT:
SSH_PUBLIC_KEY: |-
ssh-rsa ...
ssh-ed25519 ...
Возвращаемые значения
Общие возвращаемые значения описаны здесь, следующие поля уникальны для этого модуля:
Ключ | Описание |
|---|---|
instances complex | список информации об экземплярах, состояние которых изменено или которые получены с помощью опции Возвращается: успех |
|
attributes dictionary |
Словарь атрибутов ключ/значение, связанных с экземпляром Возвращается: успех Пример: |
|
cpu float |
Процент процессора, деленный на 100 Возвращается: успех Пример: |
|
disk_size string |
Размер диска в MB Возвращается: успех Пример: |
|
group_id integer |
ID группы виртуальной машины Возвращается: успех Пример: |
|
group_name string |
Имя группы виртуальной машины Возвращается: успех Пример: |
|
labels list / elements=string |
Список строковых меток, связанных с экземпляром Возвращается: успех Пример: |
|
lcm_state string |
Состояние LCM экземпляра, актуальное только когда состояние ACTIVE Возвращается: успех Пример: |
|
memory string |
Размер памяти в MB Возвращается: успех Пример: |
|
mode string |
Режим виртуальной машины Возвращается: успех Пример: |
|
networks list / elements=string |
Список словарей с информацией о IP, NAME, MAC, SECURITY_GROUPS для каждой сетевой карты Возвращается: успех Пример: |
|
owner_id integer |
ID владельца виртуальной машины Возвращается: успех Пример: |
|
owner_name string |
Имя владельца виртуальной машины Возвращается: успех Пример: |
|
state string |
Состояние экземпляра Возвращается: успех Пример: |
|
template_id integer |
ID шаблона виртуальной машины Возвращается: успех Пример: |
|
updateconf dictionary добавлено в community.general 6.3.0 |
Словарь атрибутов ключ/значение, установленных с помощью вызова API updateconf. Возвращается: успех Пример: |
|
uptime_h integer |
Время работы экземпляра в часах Возвращается: успех Пример: |
|
vcpu integer |
Количество процессоров (ядер) Возвращается: success Пример: |
|
vm_id integer |
Идентификатор виртуальной машины Возвращается: success Пример: |
|
vm_name string |
Имя виртуальной машины Возвращается: success Пример: |
instances_ids list / elements=string | Список идентификаторов экземпляров, состояние которых изменено или которые получены с помощью опции Возвращается: success Пример: |
tagged_instances complex | Список информации об экземплярах на основе специфических атрибутов и/или меток, которые указаны с помощью опций опций. Возвращается: success |
|
attributes dictionary |
Словарь атрибутов ключ/значение, которые связаны с экземпляром Возвращается: success Пример: |
|
cpu float |
Процент использования процессора, деленный на 100 Возвращается: success Пример: |
|
disk_size list / elements=string |
Размер диска в МБ Возвращается: success Пример: |
|
group_id integer |
Идентификатор группы виртуальной машины Возвращается: success Пример: |
|
group_name string |
Имя группы виртуальной машины Возвращается: success Пример: |
|
labels list / elements=string |
Список строковых меток, связанных с экземпляром Возвращается: success Пример: |
|
lcm_state string |
Состояние LCM экземпляра, актуальное только когда состояние ACTIVE Возвращается: success Пример: |
|
memory string |
Размер памяти в МБ Возвращается: success Пример: |
|
mode string |
Режим виртуальной машины Возвращается: success Пример: |
|
networks list / elements=string |
Список словарей с информацией о IP, NAME, MAC, SECURITY_GROUPS для каждой сетевой карты Возвращается: success Пример: |
|
owner_id integer |
Идентификатор пользователя виртуальной машины Возвращается: success Пример: |
|
owner_name string |
Имя пользователя виртуальной машины Возвращается: success Пример: |
|
состояние строка |
состояние экземпляра Возвращено: успех Пример: |
|
id_шаблона целое число |
id шаблона виртуальной машины Возвращено: успех Пример: |
|
updateconf словарь добавлено в community.general 6.3.0 |
Словарь атрибутов ключ/значение, которые устанавливаются с помощью вызова API updateconf Возвращено: успех Пример: |
|
uptime_h целое число |
Время работы экземпляра в часах Возвращено: успех Пример: |
|
vcpu целое число |
Количество процессоров (ядер) Возвращено: успех Пример: |
|
id_vm целое число |
id виртуальной машины Возвращено: успех Пример: |
|
имя_vm строка |
имя виртуальной машины Возвращено: успех Пример: |
Ссылки на коллекцию
© 2012–2018 Michael DeHaan
© 2018–2024 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/latest/collections/community/general/one_vm_module.html