Spec-Zone.ru › Ansible 2.11

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 ←
  • absent
  • running
  • rebooted
  • poweredoff
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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API