infra

oVirt Infra

Эта роль была перенесена в oVirt Ansible Collection, пожалуйста, используйте последнюю версию оттуда. Этот репозиторий теперь доступен только для чтения и больше не используется для активной разработки.

Роль ovirt.infra позволяет вам настроить инфраструктуру oVirt, включая: пула MAC-адресов, дата-центры, кластеры, сети, хосты, пользователей и группы.

Целевая машина

Если вы используете эту роль для управления пользователями, она будет использовать ovirt-aaa-jdbc-tool, который находится на машине с движком, поэтому вы должны запускать роль на машине с движком.

Примечание

Обратите внимание, что при установке этой роли из Ansible Galaxy вам будет предложено выполнить следующую команду:

$ ansible-galaxy install ovirt.infra

Это загрузит роль в директорию с тем же именем, что и вы указали в командной строке, в данном случае ovirt.infra. Но обратите внимание на регистронезависимость, поэтому, если вы укажете, например, OVIRT.infra, она загрузит ту же роль, но добавит ее в директорию с именем OVIRT.infra, и вам всегда придется использовать эту роль с префиксом в верхнем регистре. Так что будьте осторожны, указывая имя роли в командной строке.

При установке RPM мы устанавливаем три устаревших имени: ovirt.infra, oVirt.infra и ovirt-infra. Поэтому вы можете использовать любое из этих имен. Эта документация и примеры в этом репозитории используют имя ovirt.infra. Имена ролей oVirt.infra и ovirt-infra устарели.

Требования

  • oVirt Python SDK версии 4.3
  • Ansible версии 2.9

Переменные роли

Датацентр

Чтобы настроить/очистить датацентр, вы можете использовать следующие переменные:

Имя Значение по умолчанию Описание
data_center_name UNDEF Имя датацентра.
data_center_description UNDEF Описание датацентра.
data_center_local false Укажите, является ли датацентр общим или локальным.
compatibility_version UNDEF Совместимая версия датацентра.
data_center_state present Укажите, должен ли датацентр присутствовать или отсутствовать.
recursive_cleanup false Укажите, нужно ли рекурсивно удалить все сущности внутри ДЦ. Действительно только при state == absent.
format_storages false Укажите, нужно ли отформатировать все хранилища, которые будут удалены как часть ДЦ. Действительно только при data_center_state == absent и recursive_cleanup == true.

Пулы MAC-адресов

Чтобы настроить пулы MAC-адресов, вы можете определить список переменной с именем mac_pools. Элементы в списке переменной mac_pools могут содержать следующие параметры:

Имя Значение по умолчанию Описание
mac_pool_name UNDEF Имя пула MAC-адресов для управления.
mac_pool_ranges UNDEF Список диапазонов MAC-адресов. От и до должны быть разделены запятой. Например: 00:1a:4a:16:01:51,00:1a:4a:16:01:61
mac_pool_allow_duplicates UNDEF Если (true), разрешить использование одного и того же MAC-адреса несколько раз в пуле. Значение по умолчанию установлено движком oVirt в false.

Кластеры

Чтобы настроить кластеры, вы можете определить список переменной с именем clusters. Элементы в списке переменной clusters могут содержать следующие параметры:

Имя Значение по умолчанию Описание
name UNDEF (Обязательно) Имя кластера.
state present Состояние кластера.
cpu_type Intel Conroe Family Тип ЦП кластера.
profile UNDEF Профиль кластера. Вы можете выбрать предопределенный профиль, смотрите таблицы ниже.
ballooning UNDEF Если True, включите оптимизацию памяти с помощью balloon. Мембранный шар используется для перераспределения/восстановления памяти хоста на основе потребностей ВМ динамически.
description UNDEF Описание кластера.
ksm UNDEF Если True, MoM позволяет запускать объединение одинаковых страниц ядра KSM, когда это необходимо и когда оно может принести экономию памяти, превышающую его затраты на ЦП.
ksm_numa UNDEF Если True, включает KSM ksm для лучшей производительности внутри узлов NUMA.
vm_reason UNDEF Если True, включает дополнительное поле причины, когда виртуальная машина отключена от менеджера, позволяя администратору предоставить объяснение для обслуживания.
host_reason UNDEF Если True, включает дополнительное поле причины, когда хост помещен в режим обслуживания из менеджера, позволяя администратору предоставить объяснение для обслуживания.
memory_policy
alias: performance_preset
UNDEF
  • disabled - Отключает совместное использование страниц памяти.
  • server - Устанавливает порог совместного использования страниц памяти на 150% от системной памяти на каждом хосте.
  • desktop - Устанавливает порог совместного использования страниц памяти на 200% от системной памяти на каждом хосте.
migration_policy UNDEF Политика миграции определяет условия для живой миграции виртуальных машин в случае отказа хоста. Поддерживаются следующие политики:
  • legacy - Устаревшее поведение версии 3.6.
  • minimal_downtime - Виртуальные машины не должны испытывать значительные простои.
  • suspend_workload - Виртуальные машины могут испытать более значительные простои.
  • post_copy - Виртуальные машины не должны испытывать значительные простои. Если миграция ВМ не конвергирует долгое время, миграция будет переключена на post-copy.
scheduling_policy UNDEF Политика планирования, используемая кластером.
ha_reservation UNDEF Если True, включает мониторинг oVirt/RHV ёмкости кластера для высокодоступных виртуальных машин.
fence_enabled UNDEF Если True, включает ограждение кластера.
fence_connectivity_threshold UNDEF Порог, используемый fence_skip_if_connectivity_broken.
fence_skip_if_connectivity_broken UNDEF Если True, ограждение будет временно отключено, если процент хостов в кластере, испытывающих проблемы с подключением, больше или равен определенному порогу.
fence_skip_if_sd_active UNDEF Если True, любые хосты в кластере, которые не отвечают и все еще подключены к хранилищу, не будут ограждены.
mac_pool UNDEF Имя пула MAC.
comment UNDEF Комментарий к кластеру.
migration_bandwidth UNDEF Настройки ширины канала определяют максимальную ширину канала как исходящих, так и входящих миграций на хосте.
Поддерживаются следующие варианты ширины канала:
  • auto - Ширина канала берется из настройки ограничения скорости [Мбит/с] в QoS сети хоста датацентра.
  • hypervisor_default - Ширина канала контролируется локальной настройкой VDSM на отправляющем хосте.
  • custom - Определено пользователем (в Мбит/с).
migration_bandwidth_limit UNDEF Установите пользовательский лимит ширины канала миграции.
network UNDEF Управляющая сеть кластера для доступа к хостам кластера.
resilience_policy UNDEF Политика устойчивости определяет, как виртуальные машины приоритизируются в миграции.
Поддерживаются следующие значения:
  • do_not_migrate - Запрещает миграцию виртуальных машин.
  • migrate - Мигрирует все виртуальные машины в порядке установленного приоритета.
  • migrate_highly_available - Мигрирует только высокодоступные виртуальные машины, чтобы избежать перегрузки других хостов.
rng_sources UNDEF Список, который указывает устройства генератора случайных чисел, которые будут использовать все хосты в кластере. Поддерживаются генераторы: hwrng и random.
serial_policy UNDEF Укажите политику серийного номера для виртуальных машин в кластере.
Поддерживаются следующие варианты:
  • vm - Устанавливает UUID виртуальной машины как ее серийный номер.
  • host - Устанавливает UUID хоста как серийный номер виртуальной машины.
  • custom - Позволяет вам указать кастомный серийный номер в serial_policy_value.
serial_policy_value UNDEF Позволяет указать кастомный серийный номер. Этот параметр используется только когда serial_policy является кастомным.
spice_proxy UNDEF Прокси-сервер, через который клиент SPICE будет подключаться к виртуальным машинам. Адрес должен быть в следующем формате: протокол://[хост]:[порт]
switch_type UNDEF Тип свитча, который будет использоваться всеми сетями в данном кластере. Либо legacy, который использует linux bridge, либо ovs, используя Open vSwitch.
threads_as_cores UNDEF Если True, потоки хоста будут рассматриваться как ядра, которые могут использоваться виртуальными машинами.
trusted_service UNDEF Если True, включает интеграцию с сервером OpenAttestation.
virt UNDEF Если True, хосты в этом кластере будут использоваться для запуска виртуальных машин. По умолчанию true.
gluster UNDEF Если True, хосты в этом кластере будут использоваться в качестве узлов сервера Gluster Storage, а не для запуска виртуальных машин.
external_network_providers UNDEF Список, который указывает внешние сетевые провайдеры, доступные в кластере.

Дополнительную информацию о параметрах можно найти в документации модуля ovirt_cluster.

Профиль кластера

Возможные варианты profile кластера - это development и production, их значения по умолчанию описаны ниже:

Разработка

Профиль кластера development имеет предустановленные следующие значения:

Параметр Значение
ballooning true
ksm true
host_reason false
vm_reason false
memory_policy server
migration_policy post_copy
Производство

Профиль кластера production имеет предустановленные следующие значения:

Параметр Значение
ballooning false
ksm false
host_reason true
vm_reason true
memory_policy disabled
migration_policy suspend_workload
scheduling_policy evenly_distributed
ha_reservation true
fence_enabled true
fence_skip_if_connectivity_broken true
fence_skip_if_sd_active true

Хосты

Чтобы настроить хосты, вы можете определить список переменной с именем hosts. Элементы в списке переменной hosts могут содержать следующие параметры:

Имя Значение по умолчанию Описание
name UNDEF (Обязательно) Имя хоста.
state present Указывает, должен ли хост быть present или absent.
address UNDEF IP-адрес или FQDN хоста.
password UNDEF Корневой пароль хоста. Обязательно, если public_key равно false.
public_key UNDEF Если true, должен быть использован публичный ключ для аутентификации на хосте.
cluster UNDEF (Обязательно) Кластер, к которому должен подключаться хост.
timeout 1800 Максимальное время ожидания для состояния "включен" хоста.
poll_interval 20 Интервал опроса для проверки статуса хоста.
hosted_engine UNDEF Указывает, является ли хост 'развернутым' как хост с движком.
power_management UNDEF Управление питанием. Вы можете выбрать предопределенные переменные, смотрите таблицы ниже.

В случае, если вы не можете использовать переменную hosts по какой-либо причине в своем плейбуке, вы можете изменить имя этой переменной, переопределив значение переменной hosts_var_name. Пример:

- name: Настройка инфраструктуры oVirt
  hosts: engine

  roles:
    - role: ovirt.infra
      vars:
        hosts_var_name: ovirt_hosts
        ovirt_hosts:
          - name: host_0
            state: present
            address: 1.2.3.4
            password: 123456
            cluster: Default
Управление питанием хоста

Параметр power_management имеет предустановленные следующие значения:

Имя Значение по умолчанию Описание
address UNDEF Адрес интерфейса управления питанием.
state present Должно ли управление питанием хоста быть присутствующим/отсутствующим.
username UNDEF Имя пользователя для подключения к интерфейсу управления питанием.
password UNDEF Пароль пользователя, указанного в параметре C(username).
type UNDEF Тип управления питанием. Значения по умолчанию oVirt/RHV: drac5, ipmilan, rsa, bladecenter, alom, apc, apc_snmp, eps, wti, rsb, cisco_ucs, drac7, hpblade, ilo, ilo2, ilo3, ilo4, ilo_ssh, но пользователь может определить свой собственный тип.
options UNDEF Словарь дополнительных параметров агента ограждения (включая слот управления питанием). Дополнительную информацию можно найти по адресу https://github.com/ClusterLabs/fence-agents/blob/master/doc/FenceAgentAPI.md.
port UNDEF Порт интерфейса управления питанием.

Сети

Логические сети

Чтобы настроить логические сети, вы можете определить список переменной с именем logical_networks. Список logical_networks может содержать следующие параметры:

Имя Значение по умолчанию Описание
name UNDEF Имя сети.
state present Указывает, должно ли состояние сети быть present или absent.
vlan_tag UNDEF Укажите VLAN тег.
vm_network True Если True, сеть будет помечена как сеть для ВМ.
mtu UNDEF Максимальный размер передачи (MTU) сети.
description UNDEF Описание сети.
clusters UNDEF Список словарей, описывающих, как сеть управляется в конкретном кластере.
label UNDEF Имя метки, которую нужно назначить сети.

Дополнительную информацию о параметрах можно найти в документации модуля ovirt_network.

Сети хостов

Чтобы настроить сети хостов, вы можете определить список переменной с именем host_networks. Список host_networks может содержать следующие параметры:

Имя Значение по умолчанию Описание
name UNDEF Имя хоста.
state UNDEF Указывает, должно ли состояние сети быть present или absent.
check UNDEF Если true, проверяет соединение между хостом и движком.
save UNDEF Если true, конфигурация сети будет постоянной, по умолчанию она временная.
bond UNDEF Словарь, описывающий объединение сети.
networks UNDEF Словарь, описывающий сети, которые должны быть подключены к интерфейсу или объединению.
labels UNDEF Список имен меток сети, которые нужно назначить объединению или интерфейсу.
interface UNDEF Имя сетевого интерфейса, к которому должна быть подключена логическая сеть.

Дополнительную информацию о параметрах можно найти в документации модуля ovirt_host_network.

Хранилища

Чтобы настроить хранилища, вы можете определить словарную переменную с именем storages. Значение элемента в словаре storages может содержать следующие параметры (ключ всегда является именем хранилища):

Имя Значение по умолчанию Описание
master false Если true, хранилище будет добавлено как первое хранилище, что означает, что оно будет главным хранилищем.
domain_function data Функция домена хранения. Возможные значения:
  • iso
  • export
  • data
.
localfs UNDEF Словарь, определяющий локальное хранилище.
nfs UNDEF Словарь, определяющий NFS хранилище.
iscsi UNDEF Словарь, определяющий iSCSI хранилище.
posixfs UNDEF Словарь, определяющий PosixFS хранилище.
fcp UNDEF Словарь, определяющий FCP хранилище.
glusterfs UNDEF Словарь, определяющий glusterFS хранилище.
discard_after_delete UNDEF Если True, блоки домена хранения будут удалены после удаления. Включено по умолчанию. Этот параметр применим только к доменам хранения на основе блоков.

Дополнительную информацию о параметрах можно найти в документации модуля ovirt_storage_domain.

AAA JDBC

Пользователи

Чтобы настроить пользователей в провайдере AAA JDBC, вы можете определить словарную переменную с именем users. Элементы в списке users могут содержать следующие параметры:

Имя Значение по умолчанию Описание
state present Указывает, должен ли пользователь быть present или absent.
name UNDEF Имя пользователя.
authz_name UNDEF Провайдер авторизации пользователя.
password UNDEF Пароль пользователя.
valid_to UNDEF Указывает дату, до которой учетная запись остается действительной.
attributes UNDEF Словарь атрибутов, связанных с пользователем. Доступные атрибуты:
  • department
  • description
  • displayName
  • email
  • firstName
  • lastName
  • title
Группы пользователей

Чтобы настроить группы пользователей в провайдере AAA JDBC, вы можете определить словарную переменную с именем user_groups. Элементы в списке user_groups могут содержать следующие параметры:

Имя Значение по умолчанию Описание
state present Указывает, должна ли группа быть present или absent.
name UNDEF Имя группы.
authz_name UNDEF Провайдер авторизации группы.
users UNDEF Список пользователей, принадлежащих этой группе.

Разрешения

Чтобы настроить разрешения пользователей или групп, вы можете определить словарную переменную с именем permissions. Элементы в списке переменной permissions могут содержать следующие параметры:

Имя Значение по умолчанию Описание
state present Указывает, должно ли состояние разрешения быть present или absent.
user_name UNDEF Пользователь, для которого управляется разрешение.
group_name UNDEF Имя группы, для которой управляется разрешение.
authz_name UNDEF Имя провайдера авторизации группы или пользователя.
role UNDEF Роль, которая будет назначена пользователю или группе.
object_type UNDEF Тип объекта, который должен использоваться для назначения разрешения. Возможные типы объектов:
  • data_center
  • cluster
  • host
  • storage_domain
  • network
  • disk
  • vm
  • vm_pool
  • template
  • cpu_profile
  • disk_profile
  • vnic_profile
  • system
object_name UNDEF Имя объекта, к которому должно быть назначено разрешение.

Внешние провайдеры

Чтобы настроить внешние провайдеры, вы можете определить словарную переменную с именем external_providers. Элементы в списке переменной external_providers могут содержать следующие параметры:

Имя Значение по умолчанию Описание
name UNDEF (Обязательно) Имя внешнего провайдера.
state present Состояние внешнего провайдера. Значения могут быть:
  • present
  • absent
type UNDEF (Обязательно) Тип внешнего провайдера. Значения могут быть:
  • os_image
  • network
  • os_volume
  • foreman
url UNDEF URL, где находится внешний провайдер. Обязательно, если состояние - present.
username UNDEF Имя пользователя для входа во внешний провайдер. Применимо для всех типов.
password UNDEF Пароль пользователя, указанного в параметре username. Применимо для всех типов.
tenant UNDEF Имя арендатора.
auth_url UNDEF URL аутентификации Keystone для провайдера OpenStack. Обязательно для:
  • os_image
  • network
  • os_volume
data_center UNDEF Имя датацентра, к которому должен быть подключен провайдер. Применимо для типа os_volume.
authentication_keys UNDEF Список ключей аутентификации. Каждый ключ представлен словарем, например {'uuid': 'my-uuid', 'value': 'секретное значение'}. Добавлено в ansible 2.6. Применимо для типа os_volume.

Дополнительную информацию о параметрах можно найти в документации модуля ovirt_external_provider.

Пример плейбука

---
- name: Инфраструктура oVirt
  hosts: localhost
  connection: local
  gather_facts: false

  vars:
     engine_fqdn: ovirt-engine.example.com
     engine_user: admin@internal
     engine_password: 123456
     engine_cafile: /etc/pki/ovirt-engine/ca.pem
     data_center_name: mydatacenter
     compatibility_version: 4.1

     mac_pools:
      - mac_pool_name: "Default"
        mac_pool_ranges:
          - "00:1a:4a:16:01:51,00:1a:4a:16:01:61"

     clusters:
      - name: production
        cpu_type: Intel Conroe Family
        profile: production

     hosts:
      - name: myhost
        address: 1.2.3.4
        cluster: production
        password: 123456
      - name: myhost1
        address: 5.6.7.8
        cluster: production
        password: 123456
        power_management:
          address: 9.8.7.6
          username: root
          password: password
          type: ipmilan
          options:
            myoption1: x
            myoption2: y
            slot: myslot

     storages:
       mynfsstorage:
         master: true
         state: present
         nfs:
           address: 10.11.12.13
           path: /the_path
       myiscsistorage:
         state: present
         iscsi:
           target: iqn.2014-07.org.ovirt:storage
           port: 3260
           address: 100.101.102.103
           username: username
           password: password
           lun_id: 3600140551fcc8348ea74a99b6760fbb4
       mytemplates:
         domain_function: export
         nfs:
           address: 100.101.102.104
           path: /exports/nfs/exported
       myisostorage:
         domain_function: iso
         nfs:
           address: 100.101.102.105
           path: /exports/nfs/iso

     logical_networks:
       - name: mynetwork
         clusters:
           - name: production
             assigned: yes
             required: no
             display: no
             migration: yes
             gluster: no

     host_networks:
       - name: myhost1
         check: true
         save: true
         bond:
           name: bond0
           mode: 2
           interfaces:
             - eth2
             - eth3
         networks:
           - name: mynetwork
             boot_protocol: dhcp

     users:
      - name: john.doe
        authz_name: internal-authz
        password: 123456
        valid_to: "2018-01-01 00:00:00Z"
      - name: joe.doe
        authz_name: internal-authz
        password: 123456
        valid_to: "2018-01-01 00:00:00Z"

     user_groups:
      - name: admins
        authz_name: internal-authz
        users:
         - john.doe
         - joe.doe

     permissions:
      - state: present
        user_name: john.doe
        authz_name: internal-authz
        role: UserROle
        object_type: cluster
        object_name: production

      - state: present
        group_name: admins
        authz_name: internal-authz
        role: UserVmManager
        object_type: cluster
        object_name: production

     external_providers:
       - name: myglance
         type: os_image
         state: present
         url: http://externalprovider.example.com:9292
         username: admin
         password: secret
         tenant: admin
         auth_url: http://externalprovider.example.com:35357/v2.0/

  pre_tasks:
    - name: Вход в oVirt
      ovirt_auth:
        hostname: "{{ engine_fqdn }}"
        username: "{{ engine_user }}"
        password: "{{ engine_password }}"
        ca_file: "{{ engine_cafile | default(omit) }}"
        insecure: "{{ engine_insecure | default(true) }}"
      tags:
        - всегда

  roles:
    - ovirt.infra

  post_tasks:
    - name: Выход из oVirt
      ovirt_auth:
        state: absent
        ovirt_auth: "{{ ovirt_auth }}"
      tags:
        - всегда

asciicast

Лицензия

Лицензия Apache 2.0

О проекте

Role to manage oVirt infrastructure.

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