Spec-Zone.ru › Ansible

Модуль community.general.one_vm — создание или завершение экземпляров OpenNebula

Примечание

Этот модуль входит в коллекцию community.general (версия 12.6.1).

Возможно, эта коллекция уже установлена, если вы используете пакет ansible. Она не входит в состав ansible-core. Чтобы проверить, установлена ли она, выполните ansible-galaxy collection list.

Для установки используйте: ansible-galaxy collection install community.general. Для использования этого модуля необходимы дополнительные требования; подробности см. в разделе Требования.

Чтобы использовать модуль в плейбуке, укажите: community.general.one_vm.

  • Краткое описание
  • Требования
  • Параметры
  • Атрибуты
  • Примеры
  • Возвращаемые значения

Краткое описание

  • Управляет экземплярами OpenNebula.

Требования

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

  • pyone

Параметры

Параметр

Комментарии

api_password

string

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

Чтобы переопределить этот путь, задайте переменную среды ONE_AUTH.

api_url

string

URL RPC-сервера OpenNebula.

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

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

api_username

string

Имя пользователя для входа на RPC-сервер OpenNebula. Если не задано, используется значение переменной среды 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

Требуемая для нового экземпляра доля CPU, деленная на 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.

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

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

disk_size

list / elements=string

Размер диска, создаваемого для новых экземпляров (в МБ, ГБ, ТБ,…).

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

exact_count

integer

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

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

group_id

integer

Идентификатор группы, которая назначается группе экземпляра.

hard

boolean

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

Варианты:

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

instance_ids

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

list / elements=integer

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

labels

list / elements=string

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

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

memory

string

Размер памяти для новых экземпляров (в МБ, ГБ, ..).

mode

string

Задает режим прав доступа к экземпляру в восьмеричном формате, например 0600, чтобы предоставить владельцу use и manage, а группе и остальным пользователям не предоставлять никаких прав.

networks

list / elements=dictionary

Список словарей с параметрами сети. Подробнее см. примеры.

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

owner_id

integer

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

persistent

boolean

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

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

Варианты:

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

state

string

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

running — запускает экземпляры.

poweredoff — выключает экземпляры.

rebooted — перезагружает экземпляры.

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

Варианты:

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

template_id

integer

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

template_name

string

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

updateconf

dictionary

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

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

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

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

Поддерживаются следующие атрибуты:

BACKUP_CONFIG: BACKUP_VOLATILE, FS_FREEZE, INCREMENT_MODE, KEEP_LAST, MODE;

CONTEXT: (любое значение, кроме ETH*. Подстановки переменных выполняются);

CPU_MODEL: FEATURES, MODEL;

FEATURES: ACPI, APIC, GUEST_AGENT, HYPERV, IOTHREADS, LOCALTIME, PAE, VIRTIO_BLK_QUEUES, VIRTIO_SCSI_QUEUES;

GRAPHICS: COMMAND, KEYMAP, LISTEN, PASSWD, PORT, TYPE;

INPUT: BUS, TYPE;

OS: ARCH, BOOT, BOOTLOADER, FIRMWARE, INITRD, KERNEL, KERNEL_CMD, MACHINE, ROOT, SD_DISK_BUS, UUID;

RAW: DATA, DATA_VMX, TYPE, VALIDATE;

VIDEO: ATS, IOMMU, RESOLUTION, TYPE, VRAM.

vcpu

integer

Количество процессоров (ядер), используемых новой виртуальной машиной.

vm_start_on_hold

boolean

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

Варианты:

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

wait

boolean

Ожидать, пока экземпляр достигнет требуемого состояния, прежде чем вернуть управление. Обратите внимание: ожидание перехода экземпляра в состояние «работает» не означает, что к этой машине уже можно подключиться по SSH; оно лишь означает, что процесс загрузки экземпляра начался. Подробности см. в примере использования модуля ansible.builtin.wait_for.

Варианты:

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

wait_timeout

integer

Время ожидания до его завершения по тайм-ауту, в секундах.

По умолчанию: 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:
    port: 22
    host: '{{ 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

list / elements=dictionary

Список сведений об экземплярах, состояние которых изменено или которые получены с помощью параметра 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

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

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

Пример: "20480 MB"

group_id

integer

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

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

Пример: 1

group_name

string

Название группы виртуальной машины.

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

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

labels

list / elements=string

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

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

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

lcm_state

string

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

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

Пример: "RUNNING"

memory

string

Объём памяти в МБ.

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

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

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

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

Пример: 143

owner_name

string

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

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

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

state

string

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

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

Пример: "ACTIVE"

template_id

integer

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

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

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

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

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

Пример: 2

vm_id

integer

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

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

Пример: 153

vm_name

string

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

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

Пример: "foo"

instances_ids

list / elements=string

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

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

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

tagged_instances

list / elements=dictionary

Список сведений об экземплярах на основе заданных атрибутов и/или меток, указанных с помощью параметров count_attributes и count_labels.

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

attributes

dictionary

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

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

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

cpu

float

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

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

Пример: 0.2

disk_size

list / elements=string

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

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

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

group_id

integer

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

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

Пример: 1

group_name

string

Название группы виртуальной машины.

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

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

labels

list / elements=string

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

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

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

lcm_state

string

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

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

Пример: "RUNNING"

memory

string

Объём памяти в МБ.

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

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

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

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

Пример: 143

owner_name

string

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

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

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

state

string

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

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

Пример: "ACTIVE"

template_id

integer

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

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

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

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

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

Пример: 2

vm_id

integer

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

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

Пример: 153

vm_name

string

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

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

Пример: "foo"

Авторы

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

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

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

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

Spec-Zone.ru

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