Spec-Zone.ru › Ansible 2.10

community.general.one_vm – Создаёт или завершает виртуальные машины OpenNebula

Примечание

Этот плагин входит в коллекцию community.general (версия 1.3.2).

Для его установки используйте: 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

псевдонимы: id
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
булево
    Варианты:
  • нет
  • да ←
Подождать, пока виртуальная машина достигнет желаемого состояния, прежде чем возвращаться. Имейте в виду, что если вы ждёте, пока виртуальная машина будет в рабочем состоянии, это не означает, что вы сможете подключиться к ней по SSH, только что процесс загрузки начался на этой виртуальной машине, см. пример '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
словарь
success
Словарь атрибутов ключ/значение, связанных с экземпляром.

Пример:
{'HYPERVISOR': 'kvm', 'LOGO': 'images/logos/centos.png', 'TE_GALAXY': 'bar', 'USER_INPUTS': None}
cpu
вещественное число
success
Процент использования процессора, делённый на 100.

Пример:
0.2
disk_size
строка
success
Размер диска в МБ.

Пример:
20480 МБ
group_id
целое число
success
Идентификатор группы виртуальной машины.

Пример:
1
group_name
строка
success
Имя группы виртуальной машины.

Пример:
one-users
labels
список / элементы=строка
success
Список строковых меток, связанных с экземпляром.

Пример:
['foo', 'spec-label']
lcm_state
строка
success
Состояние LCM экземпляра, относящееся только к активному состоянию.

Пример:
RUNNING
memory
строка
success
Размер оперативной памяти в МБ.

Пример:
4096 МБ
mode
строка
success
Режим виртуальной машины.

Пример:
660
networks
список / элементы=строка
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
целое число
success
Идентификатор владельца виртуальной машины.

Пример:
143
owner_name
строка
success
Имя владельца виртуальной машины.

Пример:
app-user
state
строка
success
Состояние экземпляра.

Пример:
ACTIVE
template_id
целое число
success
Идентификатор шаблона виртуальной машины.

Пример:
153
uptime_h
целое число
success
Время работы экземпляра в часах.

Пример:
35
vcpu
целое число
success
Количество процессоров (ядер).

Пример:
2
vm_id
целое число
success
Идентификатор виртуальной машины.

Пример:
153
vm_name
строка
success
Имя виртуальной машины.

Пример:
foo
instances_ids
список / элементы=строка
success
список идентификаторов экземпляров, состояние которых изменено или которые получены с параметром instance_ids.

Пример:
[1234, 1235]
tagged_instances
complex
success
Список информации об экземплярах, основанной на определённых атрибутах и/или
метках, указанных в параметрах count_attributes и count_labels.

attributes
словарь
success
Словарь атрибутов ключ/значение, связанных с экземпляром.

Пример:
{'HYPERVISOR': 'kvm', 'LOGO': 'images/logos/centos.png', 'TE_GALAXY': 'bar', 'USER_INPUTS': None}
cpu
вещественное число
success
Процент использования процессора, делённый на 100.

Пример:
0.2
disk_size
список / элементы=строка
success
Список размеров дисков в МБ.

Пример:
['20480 МБ', '10240 МБ']
group_id
целое число
success
Идентификатор группы виртуальной машины.

Пример:
1
group_name
строка
success
Имя группы виртуальной машины.

Пример:
one-users
labels
список / элементы=строка
success
Список строковых меток, связанных с экземпляром.

Пример:
['foo', 'spec-label']
lcm_state
строка
success
Состояние LCM экземпляра, относящееся только к активному состоянию.

Пример:
RUNNING
memory
строка
success
Размер оперативной памяти в МБ.

Пример:
4096 МБ
mode
строка
success
Режим виртуальной машины.

Пример:
660
networks
список / элементы=строка
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
целое число
success
Идентификатор пользователя виртуальной машины.

Пример:
143
owner_name
строка
success
Имя пользователя виртуальной машины.

Пример:
app-user
state
строка
success
Состояние экземпляра.

Пример:
ACTIVE
template_id
целое число
success
Идентификатор шаблона виртуальной машины.

Пример:
153
uptime_h
целое число
success
Время работы экземпляра в часах.

Пример:
35
vcpu
целое число
success
Количество процессоров (ядер).

Пример:
2
vm_id
целое число
success
Идентификатор виртуальной машины.

Пример:
153
vm_name
строка
success
Имя виртуальной машины.

Пример:
foo


Авторы

  • Milan Ilic (@ilicmilan)
  • Jan Meerkamp (@meerkampdvv)

© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.10/collections/community/general/one_vm_module.html

Spec-Zone.ru

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