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 Укажите формат диска.
  • cow - Если установлен, диск будет создан как "разреженный" диск, пространство будет выделено для тома по мере необходимости. Этот формат также известен как диски с тонким выделением.
  • raw - Если установлен, место на диске будет выделено сразу. Этот формат также известен как предвыделенные диски.
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
  • true - ВМ не сможет запуститься на хосте, если он не соответствует host_rule.
  • false - ВМ будет следовать host_rule с мягким принуждением.
host_rule UNDEF
  • положительное - ВМ в этой группе должны запускаться на этом хосте.
  • отрицательное - ВМ в этой группе не могут запускаться на этом хосте
hosts UNDEF Список имен хостов, назначенных этой группе.
name UNDEF (Обязательный) Имя группы affinities.
state UNDEF Должна ли группа быть присутсвующей или отсутствующей.
vm_enforcing false
  • true - ВМ не может запуститься, если не может удовлетворить vm_rule.
  • false - ВМ будет следовать vm_rule с мягким принуждением.
vm_rule UNDEF
  • положительное - все ВМ в этой группе стараются запуститься на одном хосте.
  • отрицательное - все ВМ в этой группе стараются запуститься на разных хостах.
  • отключенный - эта группа affinities не действует.
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

asciicast

Лицензия

Лицензия Apache 2.0

О проекте

Role to manage virtual machine infrastructure in oVirt.

Установить
ansible-galaxy install oVirt/ovirt-ansible-vm-infra
Лицензия
apache-2.0
Загрузки
65378
Владелец
Open Virtual Datacenter