ovirt.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.vm-infra
