vm-infra
oVirt Инфраструктура Виртуальных Машин
Эта роль была перенесена в oVirt Ansible Collection, пожалуйста, используйте последнюю версию оттуда. Этот репозиторий теперь доступен только для чтения и больше не используется для активной разработки.
Роль ovirt.vm-infra
управляет инфраструктурой виртуальных машин в oVirt. Эта роль также создает инвентарь созданных виртуальных машин, если установлен параметр wait_for_ip
в true
, и состояние виртуальной машины - running
. Все определенные виртуальные машины являются частью инвентарной группы ovirt_vm
. Роль также создает группы ovirt_tag_{tag_name}
, если на виртуальную машину назначены теги, и помещает все виртуальные машины с этим тегом в соответствующую инвентарную группу.
Рассмотрите следующую структуру переменных:
vms:
- name: myvm1
tag: mytag1
profile: myprofile
- name: myvm2
tag: mytag2
profile: myprofile
Роль создаст инвентарную группу ovirt_vm
с обеими виртуальными машинами - myvm1
и myvm2
. Роль также создаст инвентарную группу ovirt_tag_mytag1
с виртуальной машиной myvm1
и инвентарную группу ovirt_tag_mytag2
с виртуальной машиной myvm2
.
Примечание
Пожалуйста, обратите внимание, что при установке этой роли из Ansible Galaxy вам предлагается выполнить следующую команду:
$ ansible-galaxy install ovirt.vm-infra
Это загрузит роль в директорию с тем же именем, которое вы указали в командной строке, в данном случае ovirt.vm-infra
. Но учтите, что регистрозависимо, поэтому если вы укажете, например, OVIRT.vm-infra
, она загрузит ту же роль, но добавит её в директорию с именем OVIRT.vm-infra
. В таком случае вам придется в будущем ссылаться на эту роль с заглавным префиксом. Поэтому будьте осторожны с тем, как вы указываете имя роли в командной строке.
Что касается установки RPM, мы поддерживаем три устаревших имени - ovirt.vm-infra
, oVirt.vm-infra
и ovirt-vm-infra
. Вы можете использовать любое из этих имен. Эта документация и примеры в этом репозитории используют имя ovirt.vm-infra
. Имена ролей oVirt.vm-infra
и ovirt-vm-infra
устарели.
Требования
- Версия Ansible 2.9 или выше
- Версия Python SDK 4.3 или выше
- python3-jmespath или python2-jmespath
Ограничения
- Не поддерживает режим проверки Ansible (Dry Run).
Переменные роли
Название | Значение по умолчанию | |
---|---|---|
vms | UNDEF | Список словарей с характеристиками виртуальных машин. |
affinity_groups | UNDEF | Список словарей с характеристиками групп affinities. |
wait_for_ip | false | Если true, плейбук должен ждать IP-адреса виртуальной машины, сообщаемого агентом гостя. |
wait_for_ip_version | v4 | Укажите, какая версия IP должна быть ожидана. Либо v4, либо v6. |
wait_for_ip_range | 0.0.0.0/0 | Укажите CIDR IP-адреса виртуальной машины, который должен быть сообщен. Работает только для IPv4. |
debug_vm_create | false | Если true, ведет журнал задач создания виртуальной машины. Журнал может содержать пароли. |
vm_infra_create_single_timeout | 180 | Время в секундах для ожидания создания и запуска VM (если состояние - running). |
vm_infra_create_poll_interval | 15 | Интервал опроса. Время в секундах между проверками состояния VM. |
vm_infra_create_all_timeout | vm_infra_create_single_timeout * (vms.length) | Общее время ожидания создания/запуска всех ВМ. |
vm_infra_wait_for_ip_retries | 5 | Количество повторных попыток для проверки, если ВМ сообщает свой IP-адрес. |
vm_infra_wait_for_ip_delay | 5 | Интервал опроса IP-адреса. Время в секундах между проверками, сообщает ли ВМ IP-адрес. |
Переменные vms
и profile
могут содержать следующие атрибуты, учтите, что если вы определяете одну и ту же переменную в обеих, значение в vms
имеет приоритет:
Название | Значение по умолчанию | |
---|---|---|
name | UNDEF | Имя создаваемой виртуальной машины. |
tag | UNDEF | Имя тега, который будет назначен виртуальной машине. Только администраторы могут использовать этот атрибут. |
cloud_init | UNDEF | Словарь со значениями для инициализации виртуальной машины на Unix с использованием cloud init. Подробнее в разделе cloud_init. |
cloud_init_nics | UNDEF | Список словарей, представляющих сетевые интерфейсы, которые должны быть настроены с помощью cloud init. Подробнее в разделе cloud_init_nics. |
sysprep | UNDEF | Словарь со значениями для инициализации виртуальной машины Windows с использованием sysprep. Подробнее в разделе sysprep. |
profile | UNDEF | Словарь, описывающий оборудование виртуальной машины. Подробнее в таблице ниже. |
state | present | Должна ли виртуальная машина быть остановлена, присутствовать или работать. Приоритетнее значения из профиля. |
nics | UNDEF | Список словарей с указанием NIC виртуальной машины. Подробнее ниже. |
cluster | UNDEF | Имя кластера, в котором будет создана виртуальная машина. |
clone | No | Если да, диски созданной виртуальной машины будут клонированы и независимы от шаблона. Этот параметр используется только когда состояние - running или present и ВМ еще не существовало. |
template | Blank | Имя шаблона, на основе которого должна быть создана виртуальная машина. |
template_version | UNDEF | Версия шаблона, которая будет использоваться для ВМ. По умолчанию используется последняя доступная версия шаблона. |
memory | UNDEF | Объем памяти виртуальной машины. |
memory_max | UNDEF | Верхний предел объема памяти виртуальной машины, до которого можно выполнить горячую замену памяти. |
memory_guaranteed | UNDEF | Объем минимально гарантированной памяти виртуальной машины. Префикс использует стандарт IEC 60027-2 (например, 1GiB, 1024MiB). Параметр memory_guaranteed не может быть меньше параметра memory. |
cores | UNDEF | Количество ядер процессора, используемых виртуальной машиной. |
sockets | UNDEF | Количество сокетов виртуальных процессоров виртуальной машины. |
cpu_shares | UNDEF | Задать долю процессора для этой виртуальной машины. |
cpu_threads | UNDEF | Установить потоки процессора для этой виртуальной машины. |
disks | UNDEF | Список словарей, описывающих дополнительные диски виртуальной машины. Подробнее ниже. |
nics | UNDEF | Список словарей с указанием NIC виртуальной машины. Подробнее ниже. |
custom_properties | UNDEF | Свойства, отправляемые VDSM для настройки различных хуков. Пользовательские свойства - это список словарей, которые могут содержать следующие значения: name - Имя пользовательского свойства. Например: hugepages, vhost, sap_agent и т.д. regexp - Регулярное выражение для установки для пользовательского свойства. value - Значение для установки для пользовательского свойства. |
high_availability | UNDEF | Должен ли узел быть высокодоступным или нет. |
high_availability_priority | UNDEF | Указывает приоритет виртуальной машины в очереди на выполнение и миграцию. Виртуальные машины с более высоким приоритетом будут запускаться и мигрировать раньше, чем виртуальные машины с более низким приоритетом. Значение - целое число от 0 до 100. Чем выше значение, тем выше приоритет. Если значение не указано, значение по умолчанию устанавливается движком oVirt/RHV. |
io_threads | UNDEF | Количество потоков ввода-вывода, используемых виртуальной машиной. 0 - означает отключение потоков ввода-вывода. |
description | UNDEF | Описание виртуальной машины. |
operating_system | UNDEF | Операционная система виртуальной машины. Например: rhel_7x64 |
type | UNDEF | Тип виртуальной машины. Возможные значения: desktop, server или high_performance |
graphical_console | UNDEF | Назначить графическую консоль виртуальной машине. Графическая консоль - это словарь, который может иметь следующие значения: headless_mode - Если true, отключить графическую консоль для этой виртуальной машины. protocol - 'VNC', 'Spice' или оба. |
storage_domain | UNDEF | Имя домена хранения, где должны быть созданы все диски виртуальной машины. Рассматривается только при наличии шаблона. |
state | present | Должна ли виртуальная машина быть остановлена, присутствовать или работать. |
ssh_key | UNDEF | SSH ключ, который будет развернут на виртуальной машине. Этот параметр сохранен для обратной совместимости и имеет приоритет перед authorized_ssh_keys в словаре cloud_init. |
domain | UNDEF | Домен виртуальной машины. Этот параметр сохранен для обратной совместимости и имеет приоритет перед host_name в словаре cloud_init или sysprep. |
lease | UNDEF | Имя домена хранения, на котором хранится аренда данной виртуальной машины. |
root_password | UNDEF | Пароль root для виртуальной машины. Этот параметр сохранен для обратной совместимости и имеет приоритет перед root_password в словаре cloud_init или sysprep. |
host | UNDEF | Если вам нужно установить cpu_mode как host_passthrough, вы должны использовать этот параметр для определения хоста, который следует использовать вместе с политикой размещения, установленной на зафиксированную. |
cpu_mode | UNDEF | Режим ЦП виртуальной машины. Это может быть одно из следующих: host_passthrough, host_model или custom. |
placement_policy | UNDEF | Конфигурация политики размещения виртуальной машины. |
boot_devices | UNDEF | Список загрузочных устройств, которые должны использоваться для загрузки. Допустимые значения: cdrom , hd , network . |
serial_console | UNDEF | Истинно, чтобы включить VirtIO последовательную консоль, Ложно - отключить ее. По умолчанию выбирается движком oVirt/RHV. |
serial_policy | UNDEF | Укажите политику серийного номера для виртуальной машины. Поддерживаются следующие варианты. vm - Устанавливает UUID виртуальной машины в качестве ее серийного номера. host - Устанавливает UUID хоста в качестве серийного номера виртуальной машины. custom - Позволяет указать пользовательский серийный номер в serial_policy_value. |
serial_policy_value | UNDEF | Позволяет вам указать пользовательский серийный номер. Этот параметр используется только когда serial_policy является custom. |
comment | UNDEF | Комментарий к виртуальной машине. |
Элемент в списке disks
словаря profile
может содержать следующие атрибуты:
Название | Значение по умолчанию | |
---|---|---|
size | UNDEF | Размер дополнительного диска. |
name | UNDEF | Имя дополнительного диска. |
id | UNDEF | Идентификатор диска. Если вы передадите идентификатор диска и имя, диск будет найден по идентификатору и имя диска будет обновлено, если оно отличается от переданного в параметре name. |
storage_domain | UNDEF | Имя домена хранения, где должен быть создан диск. |
interface | UNDEF | Интерфейс диска. |
name_prefix | True | Если true, имя vm будет использоваться в качестве префикса имени диска. Если false, будет использовано только имя диска - может быть полезно при создании vm из шаблона с пользовательским размером диска. |
format | UNDEF | Укажите формат диска.
|
bootable | UNDEF | true, если диск должен быть загрузочным. |
activate | UNDEF | true, если диск должен быть активирован. |
Элемент в списке nics
словаря profile
может содержать следующие атрибуты:
Название | Значение по умолчанию | |
---|---|---|
name | UNDEF | Имя сетевого интерфейса. |
interface | UNDEF | Тип сетевого интерфейса. |
mac_address | UNDEF | Пользовательский MAC-адрес сетевого интерфейса, по умолчанию он получается из пула MAC-адресов. |
network | UNDEF | Логическая сеть, которую должен использовать сетевой интерфейс ВМ. Если сеть не указана, используется пустая сеть. |
profile | UNDEF | Профиль виртуального сетевого интерфейса, который должен быть подключен к сетевому интерфейсу ВМ. |
Список affinity_groups
может содержать следующие атрибуты:
Название | Значение по умолчанию | |
---|---|---|
cluster | UNDEF (Обязательный) | Имя центра кластеров группы affinities. |
description | UNDEF | Читаемое человеком описание. |
host_enforcing | false |
|
host_rule | UNDEF |
|
hosts | UNDEF | Список имен хостов, назначенных этой группе. |
name | UNDEF (Обязательный) | Имя группы affinities. |
state | UNDEF | Должна ли группа быть присутсвующей или отсутствующей. |
vm_enforcing | false |
|
vm_rule | UNDEF |
|
vms | UNDEF | Список ВМ, которые должны быть назначены этой группе affinities. |
wait | true | Если true, модуль будет ждать желаемого состояния. |
Список affinity_labels
может содержать следующие атрибуты:
Название | Значение по умолчанию | |
---|---|---|
cluster | UNDEF (Обязательный) | Имя центра кластеров группы affinity labels. |
hosts | UNDEF | Список имен хостов, назначенных этой метке. |
name | UNDEF (Обязательный) | Имя группы affinity label. |
state | UNDEF | Должна ли метка быть присутсвующей или отсутствующей. |
vms | UNDEF | Список ВМ, которые должны быть назначены этой метке. |
Словарь cloud_init
может содержать следующие атрибуты:
Название | Описание |
---|---|
host_name | Имя хоста, которое будет установлено на виртуальной машине при развертывании. |
timezone | Часовой пояс, который будет установлен на виртуальной машине при развертывании. |
user_name | Имя пользователя, которое будет использоваться для установки пароля на виртуальной машине при развертывании. |
root_password | Пароль, который будет установлен для пользователя, указанного параметром user_name. По умолчанию устанавливается для пользователя root. |
authorized_ssh_keys | Используйте эти SSH ключи для входа на виртуальную машину. |
regenerate_ssh_keys | Если True, SSH ключи будут сгенерированы заново на виртуальной машине. |
custom_script | Скрипт Cloud-init, который будет выполнен на виртуальной машине при развертывании. Он добавляется в конец скрипта cloud-init, сгенерированного любыми другими параметрами. |
dns_servers | DNS-серверы, которые будут настроены на виртуальной машине. |
dns_search | DNS поисковые домены, которые будут настроены на виртуальной машине. |
nic_boot_protocol | Установить протокол загрузки сетевого интерфейса виртуальной машины. Может быть одним из: none, dhcp или static. |
nic_ip_address | Если протокол загрузки является статическим, установите этот IP-адрес на сетевой интерфейс виртуальной машины. |
nic_netmask | Если протокол загрузки является статическим, установите эту подсеть на сетевой интерфейс виртуальной машины. |
nic_gateway | Если протокол загрузки является статическим, установите этот шлюз на сетевой интерфейс виртуальной машины. |
nic_name | Установите имя сетевого интерфейса виртуальной машины. |
nic_on_boot | Если True, сетевой интерфейс будет установлен для запуска при загрузке. |
Словарь sysprep
может содержать следующие атрибуты:
Название | Описание |
---|---|
host_name | Имя хоста, которое будет установлено на виртуальной машине при развертывании. |
active_directory_ou | Организационная единица Active Directory, которая будет использоваться для входа пользователя. |
org_name | Имя организации, которое будет установлено на виртуальной машине Windows. |
user_name | Имя пользователя, которое будет использовано для установки пароля на виртуальной машине Windows. |
root_password | Пароль, который будет установлен для пользователя, указанного параметром user_name. По умолчанию устанавливается для пользователя root. |
windows_license_key | Ключ лицензии, который будет установлен на виртуальной машине Windows. |
input_locale | Локализация ввода виртуальной машины Windows. |
system_locale | Локализация системы виртуальной машины Windows. |
ui_language | Язык пользовательского интерфейса виртуальной машины Windows. |
domain | Домен, который будет установлен на виртуальной машине Windows. |
timezone | Часовой пояс, который будет установлен на виртуальной машине Windows. |
Список cloud_init_nics
представляет собой список словарей, представляющих сетевые интерфейсы, которые должны быть настроены с помощью cloud init. Эта опция используется, когда пользователю нужно настроить несколько сетевых интерфейсов через cloud init. Если одного сетевого интерфейса достаточно, пользователь должен использовать параметры cloud_init nic_*. Параметры cloud_init nic_* объединяются с параметрами cloud_init_nics. Словарь может содержать следующие значения.
Название | Описание |
---|---|
nic_boot_protocol | Установить протокол загрузки сетевого интерфейса виртуальной машины. Может быть одним из: none, dhcp или static. |
nic_ip_address | Если протокол загрузки является статическим, установите этот IP-адрес на сетевой интерфейс виртуальной машины. |
nic_netmask | Если протокол загрузки является статическим, установите этот шлюз на сетевой интерфейс виртуальной машины. |
nic_gateway | Если протокол загрузки является статическим, установите этот шлюз на сетевой интерфейс виртуальной машины. |
nic_name | Установите имя на сетевой интерфейс виртуальной машины. |
nic_on_boot | Если True, сетевой интерфейс будет установлен для запуска при загрузке. |
Зависимости
Нет.
Пример плейбука
---
- name: oVirt infra
hosts: localhost
connection: local
gather_facts: false
vars_files:
# Содержит зашифрованную переменную `engine_password` с помощью ansible-vault
- passwords.yml
vars:
engine_fqdn: ovirt-engine.example.com
engine_user: admin@internal
engine_cafile: /etc/pki/ovirt-engine/ca.pem
httpd_vm:
cluster: production
domain: example.com
template: rhel7
memory: 2GiB
cores: 2
ssh_key: ssh-rsa AAA...LGx user@fqdn
disks:
- size: 10GiB
name: data
storage_domain: mynfsstorage
interface: virtio
db_vm:
cluster: production
domain: example.com
template: rhel7
memory: 4GiB
cores: 1
ssh_key: ssh-rsa AAA...LGx user@fqdn
disks:
- size: 50GiB
name: data
storage_domain: mynfsstorage
interface: virtio
nics:
- name: ovirtmgmt
network: ovirtmgmt
profile: ovirtmgmt
vms:
- name: postgresql-vm-0
tag: postgresql_vm
profile: "{{ db_vm }}"
- name: postgresql-vm-1
tag: postgresql_vm
profile: "{{ db_vm }}"
- name: apache-vm
tag: httpd_vm
profile: "{{ httpd_vm }}"
affinity_groups:
- name: db-ag
cluster: production
vm_enforcing: true
vm_rule: negative
vms:
- postgresql-vm-0
- postgresql-vm-1
roles:
- ovirt.vm-infra
Следующий пример показывает, как использовать инвентарь, созданный ролью ovirt.vm-infra
в последующем плейбуке.
---
- name: Развертывание apache VM
hosts: localhost
connection: local
gather_facts: false
vars_files:
# Содержит зашифрованную переменную `engine_password` с помощью ansible-vault
- passwords.yml
vars:
wait_for_ip: true
httpd_vm:
cluster: production
state: running
domain: example.com
template: rhel7
memory: 2GiB
cores: 2
ssh_key: ssh-rsa AAA...LGx user@fqdn
disks:
- size: 10GiB
name: data
storage_domain: mynfsstorage
interface: virtio
vms:
- name: apache-vm
tag: apache
profile: "{{ httpd_vm }}"
roles:
- ovirt.vm-infra
- name: Развертывание apache на ВМ
hosts: ovirt_tag_apache
vars_files:
- apache_vars.yml
roles:
- geerlingguy.apache
Лицензия
Лицензия Apache 2.0
Role to manage virtual machine infrastructure in oVirt.
ansible-galaxy install oVirt/ovirt-ansible-vm-infra