Spec-Zone.ru › Ansible 2.6

one_vm - Создаёт или завершает экземпляры OpenNebula

Новое в версии 2.6.

  • Синопсис
    • Требования
  • Параметры
  • Примеры
  • Значения возврата
  • Статус
  • Техническое обслуживание
    • Автор

Синопсис

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

Требования

Ниже перечислены требования к хосту, на котором будет выполняться этот модуль.

  • python-oca

Параметры

Параметр Варианты/Значения по умолчанию Комментарии
api_password
Пароль пользователя для входа в сервер RPC OpenNebula. Если не задано
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.
disk_saveas
Создаёт образ диска виртуальной машины.
Это словарь, где вы должны указать name нового образа.
По желанию вы можете указать disk_id диска, который вы хотите сохранить. По умолчанию disk_id равно 0.
ПРИМЕЧАНИЕ':' Эта операция будет выполнена только для первой виртуальной машины (если передано более одного идентификатора виртуальной машины)
и виртуальная машина должна быть в состоянии poweredoff.
Эта операция также завершится ошибкой, если образ с указанным name уже существует.
disk_size
Размер диска, создаваемого для новых экземпляров (в МБ, ГБ, ТБ и т. д.).
ПРИМЕЧАНИЕ':' Этот параметр может быть использован только в том случае, если шаблон виртуальной машины, указанный с
template_id/template_name имеет ровно один диск.
exact_count
Указывает, сколько экземпляров, которые соответствуют count_attributes и
count_labels параметрам, следует развернуть. Экземпляры создаются или удаляются на основе этого значения.
ПРИМЕЧАНИЕ':' Экземпляры с наименьшими ID будут удалены в первую очередь.
group_id
ID группы, которая будет установлена как группа экземпляра
hard
bool
    Варианты:
  • нет ←
  • да
Перезагрузка, выключение или завершение экземпляров hard
instance_ids
Список идентификаторов экземпляров, используемых для состояний':' absent, running, rebooted, poweredoff

псевдонимы: id
labels По умолчанию:
[]
Список меток для ассоциации с новыми экземплярами, или для установки
state этих меток.
memory
Объём памяти для новых экземпляров (в МБ, ГБ и т. д.)
mode
Установить разрешения на доступ к экземпляру в формате октетов, например, 600 для предоставления владельцу use и manage и ничего группе и другим.
networks По умолчанию:
[]
Список словарей с параметрами сети. Подробнее см. в примерах.
owner_id
ID пользователя, который будет установлен как владелец экземпляра
state
    Варианты:
  • наличие ←
  • отсутствует
  • запущен
  • перезагружен
  • выключен
present - создание экземпляров из шаблона, указанного с template_id/template_name.
running - запуск экземпляров
poweredoff - выключение экземпляров
rebooted - перезагрузка экземпляров
absent - завершение экземпляров
template_id
ID шаблона виртуальной машины для создания нового экземпляра
template_name
Имя шаблона виртуальной машины для создания нового экземпляра
vcpu
Количество ЦП (ядер), которое будет иметь новая виртуальная машина.
wait
bool
    Варианты:
  • нет
  • да ←
Ожидать, пока экземпляр достигнет желаемого состояния, прежде чем возвращать результат. Имейте в виду, что если вы ожидаете, что экземпляр будет в рабочем состоянии, это не означает, что вы сможете подключиться к этому компьютеру SSH, а только то, что на этом экземпляре начался процесс загрузки. Подробнее см. пример с 'wait_for'.
wait_timeout По умолчанию:
300
Время ожидания, прежде чем ожидание будет прервано, в секундах

Примеры

# Create a new instance
- one_vm:
    template_id: 90
  register: result

# Print VM properties
- debug:
    msg: result

# Deploy a new VM and set its name to 'foo'
- one_vm:
    template_name: 'app1_template'
    attributes:
      name: foo

# Deploy a new VM and set its group_id and mode
- one_vm:
    template_id: 90
    group_id: 16
    mode: 660

# Change VM's permissions to 640
- one_vm:
    instance_ids: 5
    mode: 640

# Deploy 2 new instances and set memory, vcpu, disk_size and 3 networks
- 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"

# Deploy an new instance with attribute 'bar: bar1' and set its name to 'foo'
- one_vm:
    template_id: 53
    attributes:
      name: foo
      bar: bar1

# Enforce that 2 instances with attributes 'foo1: app1' and 'foo2: app2' are deployed
- one_vm:
    template_id: 53
    attributes:
      foo1: app1
      foo2: app2
    exact_count: 2
    count_attributes:
      foo1: app1
      foo2: app2

# Enforce that 4 instances with an attribute 'bar' are deployed
- 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
- 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
- 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
- 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
- one_vm:
    template_id: 53
    exact_count: 1
    count_attributes:
      name: fooapp-#

# Deploy an new instance with a network
- one_vm:
    template_id: 53
    networks:
      - NETWORK_ID: 27
  register: vm

# Wait for SSH to come up
- wait_for_connection:
  delegate_to: '{{ vm.instances[0].networks[0].ip }}'

# Terminate VMs by ids
- one_vm:
    instance_ids:
      - 153
      - 160
    state: absent

# Reboot all VMs that have labels 'foo' and 'app1'
- one_vm:
    labels:
      - foo
      - app1
    state: rebooted

# Fetch all VMs that have name 'foo' and attribute 'app: bar'
- one_vm:
    attributes:
      name: foo
      app: bar
  register: results

# Deploy 2 new instances with labels 'foo1' and 'foo2'
- one_vm:
    template_name: app_template
    labels:
      - foo1
      - foo2
    count: 2

# Enforce that only 1 instance with label 'foo1' will be running
- one_vm:
    template_name: app_template
    labels:
      - foo1
    exact_count: 1
    count_labels:
      - foo1

# Terminate all instances that have attribute foo
- one_vm:
    template_id: 53
    exact_count: 0
    count_attributes:
      foo:

# Power-off the VM and save VM's disk with id=0 to the image with name 'foo-image'
- one_vm:
    instance_ids: 351
    state: powered-off
    disk_saveas:
      name: foo-image

# Save VM's disk with id=1 to the image with name 'bar-image'
- one_vm:
    instance_ids: 351
    disk_saveas:
      name: bar-image
      disk_id: 1

Значения возврата

Общие значения возврата описаны здесь, следующие — это поля, уникальные для этого модуля:

Ключ Возвращаемое значение Описание
instances
сложный тип
успешно
список информации об экземплярах, состояние которых изменилось или которые были получены с помощью опции instance_ids.

vm_id
целое число
id виртуальной машины

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

Пример:
foo
template_id
целое число
id шаблона виртуальной машины

Пример:
153
group_id
целое число
id группы виртуальной машины

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

Пример:
one-users
owner_id
целое число
id владельца виртуальной машины

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

Пример:
app-user
mode
строка
успешно
режим виртуальной машины

Пример:
660
state
строка
состояние экземпляра

Пример:
ACTIVE
lcm_state
строка
состояние LCM экземпляра, релевантное только когда состояние равно ACTIVE

Пример:
RUNNING
cpu
вещественное число
Процент использования ЦП, разделенный на 100

Пример:
0.2
vcpu
целое число
Количество ЦП (ядер)

Пример:
2
memory
строка
Размер памяти в МБ

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

Пример:
20480 МБ
networks
список
список словарей с информацией об 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'}]
uptime_h
целое число
Время работы экземпляра в часах

Пример:
35
labels
список
список строковых меток, связанных с экземпляром

Пример:
['foo', 'spec-label']
attributes
словарь
словарь атрибутов ключ/значение, связанных с экземпляром

Пример:
{'HYPERVISOR': 'kvm', 'LOGO': 'images/logos/centos.png', 'TE_GALAXY': 'bar', 'USER_INPUTS': None}
instances_ids
список
успешно
список идентификаторов экземпляров, состояние которых изменилось или которые были получены с помощью опции instance_ids.

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

vm_id
целое число
id виртуальной машины

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

Пример:
foo
template_id
целое число
id шаблона виртуальной машины

Пример:
153
group_id
целое число
id группы виртуальной машины

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

Пример:
one-users
owner_id
целое число
идентификатор пользователя ВМ

Пример:
143
owner_name
строка
имя пользователя ВМ

Пример:
app-user
mode
строка
успешно
режим ВМ

Пример:
660
state
строка
состояние экземпляра

Пример:
ACTIVE
lcm_state
строка
состояние LCM экземпляра, релевантное только когда состояние равно ACTIVE

Пример:
RUNNING
cpu
float
Процент ЦП, делённый на 100

Пример:
0.2
vcpu
int
Количество ЦП (ядер)

Пример:
2
memory
string
Объём памяти в МБ

Пример:
4096 МБ
disk_size
string
Объём диска в МБ

Пример:
20480 МБ
networks
list
Список словарей с информацией об 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'}]
uptime_h
integer
Время работы экземпляра в часах

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

Пример:
['foo', 'spec-label']
attributes
dict
Словарь атрибутов ключ/значение, связанных с экземпляром

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


Статус

Этот модуль помечен как превью, что означает отсутствие гарантии обратной совместимости интерфейса.

Техническое обслуживание

Этот модуль помечен как сообщество, что означает, что он поддерживается сообществом Ansible. Более подробную информацию см. в разделе по поддержке и обслуживанию модулей.

Список других модулей, поддерживаемых сообществом Ansible, см. здесь.

Автор

  • Milan Ilic (@ilicmilan)

Подсказка

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

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

Spec-Zone.ru

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