Spec-Zone.ru › Ansible

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
END_OF_DOCUMENT_MARKER

Параметры

Параметр

Комментарии

api_password

string

Пароль пользователя для входа на сервер OpenNebula RPC. Если не задан, используется значение переменной окружения ONE_PASSWORD. Если не заданы ни api_username ни api_password, будет предпринята попытка аутентификации с помощью файла ONE auth. Путь по умолчанию: “~/.one/one_auth”.

Задайте переменную окружения ONE_AUTH для изменения этого пути.

api_url

string

URL сервера OpenNebula RPC.

Рекомендуется использовать HTTPS, чтобы имя пользователя/пароль не передавались по сети в незашифрованном виде.

Если не задан, используется значение переменной окружения ONE_URL.

api_username

string

Имя пользователя для входа на сервер OpenNebula RPC. Если не задано, используется значение переменной окружения ONE_USERNAME.

attributes

dictionary

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

Регистр ключей не учитывается, и OpenNebula автоматически преобразует их в верхний регистр.

Обратите внимание, что NAME — это специальный атрибут, который задает имя виртуальной машины при ее развертывании.

# символ(ов) могут быть добавлены к NAME, и модуль автоматически добавит индексы к именам виртуальных машин.

Например, ‘:’ NAME':' foo-### создаст виртуальные машины с именами foo-000, foo-001,…

При использовании с count_attributes и exact_count модуль будет сопоставлять базовое имя без части индекса.

По умолчанию: {}

count

integer

Количество экземпляров для запуска

По умолчанию: 1

count_attributes

dictionary

Словарь атрибутов ключ/значение, которые могут использоваться только с exact_count для определения количества узлов, которые должны быть развернуты на основе определенных критериев атрибутов. Это может быть выражено несколькими способами, и показано в разделе ПРИМЕРЫ.

count_labels

list / elements=string

Список меток, которые могут использоваться только с exact_count для определения количества узлов, которые должны быть развернуты на основе определенных критериев меток. Это может быть выражено несколькими способами, и показано в разделе ПРИМЕРЫ.

cpu

float

Процент процессора, деленный на 100, необходимый для нового экземпляра. Половина процессора записывается как 0,5.

datastore_id

integer

добавлено в community.general 0.2.0

Имя хранилища данных, которое будет использоваться для создания нового экземпляра

datastore_name

string

добавлено в community.general 0.2.0

Имя хранилища данных, которое будет использоваться для создания нового экземпляра

disk_saveas

dictionary

Создает образ из диска виртуальной машины.

Это словарь, в котором необходимо указать name нового образа.

Необязательно можно указать disk_id диска, который нужно сохранить. По умолчанию disk_id равен 0.

ПРИМЕЧАНИЕ: Эта операция будет выполнена только для первой виртуальной машины (если передано более одного ID виртуальной машины), и виртуальная машина должна находиться в состоянии poweredoff.

Также эта операция завершится неудачей, если образ с указанным name уже существует.

disk_size

list / elements=string

Размер создаваемого диска для новых экземпляров (в MB, GB, TB,…).

ПРИМЕЧАНИЕ: Если шаблон имеет несколько дисков, порядок размеров сопоставляется с порядком, указанным в template_id/template_name.

exact_count

integer

Указывает, сколько экземпляров, соответствующих параметрам count_attributes и count_labels, должно быть развернуто. Экземпляры создаются или завершаются в зависимости от этого значения.

ПРИМЕЧАНИЕ: Экземпляры с наименьшими ID будут завершены в первую очередь.

group_id

integer

ID группы, которая будет установлена в качестве группы экземпляра

hard

boolean

Перезагрузка, выключение или завершение работы экземпляров hard.

Варианты:

  • false ← (по умолчанию)
  • true

instance_ids

псевдонимы: ids

list / elements=integer

Список ID экземпляров, используемых для состояний: absent, running, rebooted, poweredoff.

labels

list / elements=string

Список меток для ассоциирования с новыми экземплярами или для установки state экземпляров с этими метками.

По умолчанию: []

memory

string

Размер памяти для новых экземпляров (в MB, GB, …)

mode

строка

Установите разрешения на доступ к экземпляру в формате octet, например 0600 для предоставления владельцу use и manage, а группе и другим ничего.

networks

список / элементы=словарь

Список словарей с параметрами сети. Для получения дополнительной информации см. примеры.

По умолчанию: []

owner_id

целое число

Идентификатор пользователя, который будет назначен владельцем экземпляра.

persistent

булево

добавлен в community.general 0.2.0

Создать частную постоянную копию шаблона плюс любой образ, определенный в DISK, и создать экземпляр этой копии.

Варианты:

  • false ← (по умолчанию)
  • true

state

строка

present — создание экземпляров из шаблона, указанного с помощью template_id/template_name.

running — запуск экземпляров.

poweredoff — выключение экземпляров.

rebooted — перезагрузка экземпляров.

absent — завершение работы экземпляров.

Варианты:

  • "present" ← (по умолчанию)
  • "absent"
  • "running"
  • "rebooted"
  • "poweredoff"

template_id

целое число

Идентификатор шаблона виртуальной машины для создания нового экземпляра.

template_name

строка

Имя шаблона виртуальной машины для создания нового экземпляра.

updateconf

словарь

добавлен в community.general 6.3.0

При наличии instance_ids, обновляет работающие виртуальные машины с помощью вызова API updateconf.

При создании новых виртуальных машин эмулирует вызов API updateconf через непосредственное слияние шаблонов.

Позволяет полностью изменять атрибут CONTEXT.

vcpu

целое число

Количество ЦП (ядер) у новой виртуальной машины.

vm_start_on_hold

булево

Установите в значение true, чтобы приостановить виртуальную машину во время создания.

Варианты:

  • false ← (по умолчанию)
  • true

wait

булево

Ожидать, пока экземпляр достигнет желаемого состояния, прежде чем возвращаться. Имейте в виду, что если вы ожидаете, что экземпляр будет в состоянии выполнения, это не означает, что вы сможете подключиться к нему через SSH, только что начался процесс загрузки этого экземпляра, см. пример «wait_for» для получения подробностей.

Варианты:

  • false
  • true ← (по умолчанию)

wait_timeout

целое число

Сколько времени ожидание будет ждать, в секундах

По умолчанию: 300

Атрибуты

Атрибут

Поддержка

Описание

check_mode

Поддержка: полная

Может работать в check_mode и возвращать прогнозируемый статус изменений без модификации целевого объекта.

diff_mode

Поддержка: отсутствует

При режиме diff вернет подробную информацию о том, что изменилось (или, возможно, должно измениться в check_mode).

Примеры

- 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

список информации об экземплярах, состояние которых изменено или которые получены с помощью опции instance_ids.

Возвращается: успех

attributes

dictionary

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

Возвращается: успех

Пример: {"HYPERVISOR": "kvm", "LOGO": "images/logos/centos.png", "TE_GALAXY": "bar", "USER_INPUTS": null}

cpu

float

Процент процессора, деленный на 100

Возвращается: успех

Пример: 0.2

disk_size

string

Размер диска в MB

Возвращается: успех

Пример: "20480 MB"

group_id

integer

ID группы виртуальной машины

Возвращается: успех

Пример: 1

group_name

string

Имя группы виртуальной машины

Возвращается: успех

Пример: "one-users"

labels

list / elements=string

Список строковых меток, связанных с экземпляром

Возвращается: успех

Пример: ["foo", "spec-label"]

lcm_state

string

Состояние LCM экземпляра, актуальное только когда состояние ACTIVE

Возвращается: успех

Пример: "RUNNING"

memory

string

Размер памяти в MB

Возвращается: успех

Пример: "4096 MB"

mode

string

Режим виртуальной машины

Возвращается: успех

Пример: "660"

networks

list / elements=string

Список словарей с информацией о IP, NAME, MAC, SECURITY_GROUPS для каждой сетевой карты

Возвращается: успех

Пример: [{"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

ID владельца виртуальной машины

Возвращается: успех

Пример: 143

owner_name

string

Имя владельца виртуальной машины

Возвращается: успех

Пример: "app-user"

state

string

Состояние экземпляра

Возвращается: успех

Пример: "ACTIVE"

template_id

integer

ID шаблона виртуальной машины

Возвращается: успех

Пример: 153

updateconf

dictionary

добавлено в community.general 6.3.0

Словарь атрибутов ключ/значение, установленных с помощью вызова API updateconf.

Возвращается: успех

Пример: {"CONTEXT": {"SSH_PUBLIC_KEY": "ssh-rsa ...\nssh-ed25519 ...", "START_SCRIPT": "ip r r 169.254.16.86/32 dev eth0"}, "OS": {"ARCH": "x86_64"}}

uptime_h

integer

Время работы экземпляра в часах

Возвращается: успех

Пример: 35

vcpu

integer

Количество процессоров (ядер)

Возвращается: success

Пример: 2

vm_id

integer

Идентификатор виртуальной машины

Возвращается: success

Пример: 153

vm_name

string

Имя виртуальной машины

Возвращается: success

Пример: "foo"

instances_ids

list / elements=string

Список идентификаторов экземпляров, состояние которых изменено или которые получены с помощью опции instance_ids.

Возвращается: success

Пример: [1234, 1235]

tagged_instances

complex

Список информации об экземплярах на основе специфических атрибутов и/или

меток, которые указаны с помощью опций count_attributes и count_labels

опций.

Возвращается: success

attributes

dictionary

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

Возвращается: success

Пример: {"HYPERVISOR": "kvm", "LOGO": "images/logos/centos.png", "TE_GALAXY": "bar", "USER_INPUTS": null}

cpu

float

Процент использования процессора, деленный на 100

Возвращается: success

Пример: 0.2

disk_size

list / elements=string

Размер диска в МБ

Возвращается: success

Пример: ["20480 MB", "10240 MB"]

group_id

integer

Идентификатор группы виртуальной машины

Возвращается: success

Пример: 1

group_name

string

Имя группы виртуальной машины

Возвращается: success

Пример: "one-users"

labels

list / elements=string

Список строковых меток, связанных с экземпляром

Возвращается: success

Пример: ["foo", "spec-label"]

lcm_state

string

Состояние LCM экземпляра, актуальное только когда состояние ACTIVE

Возвращается: success

Пример: "RUNNING"

memory

string

Размер памяти в МБ

Возвращается: success

Пример: "4096 MB"

mode

string

Режим виртуальной машины

Возвращается: success

Пример: "660"

networks

list / elements=string

Список словарей с информацией о IP, NAME, MAC, SECURITY_GROUPS для каждой сетевой карты

Возвращается: success

Пример: [{"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"

состояние

строка

состояние экземпляра

Возвращено: успех

Пример: "ACTIVE"

id_шаблона

целое число

id шаблона виртуальной машины

Возвращено: успех

Пример: 153

updateconf

словарь

добавлено в community.general 6.3.0

Словарь атрибутов ключ/значение, которые устанавливаются с помощью вызова API updateconf

Возвращено: успех

Пример: {"CONTEXT": {"SSH_PUBLIC_KEY": "ssh-rsa ...\nssh-ed25519 ...", "START_SCRIPT": "ip r r 169.254.16.86/32 dev eth0"}, "OS": {"ARCH": "x86_64"}}

uptime_h

целое число

Время работы экземпляра в часах

Возвращено: успех

Пример: 35

vcpu

целое число

Количество процессоров (ядер)

Возвращено: успех

Пример: 2

id_vm

целое число

id виртуальной машины

Возвращено: успех

Пример: 153

имя_vm

строка

имя виртуальной машины

Возвращено: успех

Пример: "foo"

Авторы

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

Ссылки на коллекцию

  • Система отслеживания ошибок
  • Репозиторий (исходники)
  • Спросить о помощи
  • Отправить отчет об ошибке
  • Запросить новую функцию
  • Связь

© 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

Spec-Zone.ru

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