Работа с шаблонами zVirt с помощью Ansible

Пояснение

Для использования шаблонов, а также их управлением можно использовать модули коллекции Ansible ovirt.ovirt. Также можно использовать коллекцию oVirt Ansible Collection, в которую входит роль image_template, позволяющая добавлять в zVirt шаблоны из QCOW2-образов или при указании URL-ссылки на такой образ.

В примерах использования ниже предполагается, что Playbook запускается с Менеджера управления, информация о запуске Playbook с внешнего хоста представлена во Введении в автоматизацию работы zVirt с помощью Ansible

1. Создание шаблонов с помощью модуля "ovirt_template"

Для создания шаблона из ВМ можно воспользоваться модулем ovirt_template.

Также данный модуль позволяет удалять и переименовывать шаблоны, импортировать шаблоны и управлять их версионностью.

В качестве простого примера ниже представлен Task’и, который создаёт простой шаблон из определённой ВМ:

- name: Create template from VM
  ovirt_template:
    cluster: Default               # указание кластера
    storage_domain: StorageName    # в каком домене хранить шаблон
    name: TemplateName             # название шаблона
    vm: rhel8                      # название ВМ, из которой будет создан шаблон
    description: Test              # описание шаблона

Ниже представлен пример Task’и, с помощью которой можно импортировать шаблон из экспорт домена.

- name:
  ovirt_template:
    auth: "{{ ovirt_auth }}"
    state: imported                # для импорта обязательно нужно указать состояние imported
    cluster: Default
    name: Template
    export_domain: FromDomain      # также нужно указать название экспорт-домена
    storage_domain: ToDomain       # и имя целевого домена, в который шаблон будет импортирован
    description: Test

Для удаления шаблона, нужно указать его имя и задать параметр state: absent.

2. Создание шаблонов с помощью роли "image_template"

2.1. Переменные

Шаблоны и подключение к zVirt описываются с помощью переменных.

Основными переменными являются:

engine_fqdn:            # FQDN-имя менеджера управления
engine_user:            # Логин для авторизации
engine_password:        # Пароль для авторизации
engine_cafile:          # Переменная отвечает за корневой сертификат менеджера управления

template_cluster:       # Эта переменная указывает в каком кластере создать шаблон
template_name:          # Данная переменная задаёт название шаблону
template_memory:        # Объём оперативной памяти
template_cpu:           # Количество ЦПУ, назначаемых ВМ
template_disk_size:     # Объём диска ВМ
template_disk_storage:  # Домен хранения шаблона

Некоторые переменные зависят от источника, которые будет использоваться для создания шаблона. Список всех переменных представлен в README-файле в каталоге с самой ролью.

2.2. Пример

Для создания шаблона из образа QCOW2 используется переменная qcow_url. В данной переменной указывается HTTP/S ссылка на QCOW2 образ или локальный путь до образа.

Пример создания шаблона из образа QCOW2 представлен ниже:

- name: Create a template from qcow2
  hosts: localhost
  connection: local
  gather_facts: false

  vars:
    engine_fqdn: zvirt-engine.example.com
    engine_user: ansible@internal
    engine_password: 123456
    engine_cafile: /etc/pki/ovirt-engine/ca.pem

    qcow_url: https://cloud.centos.org/centos/7/images/CentOS-7-x86_64-GenericCloud.qcow2
    # Пример указания локального пути к образу QCOW2 ниже
    # qcow_url: file:///qcow2/CentOS7.qcow2
    template_cluster: Default
    template_name: centos7_template
    template_memory: 4GiB
    template_cpu: 2
    template_disk_size: 10GiB
    template_disk_storage: mydata

  roles:
    - image_template

Перед созданием шаблона из локального образа, рекомендуется назначить владельцем директории с образом и самого образа vdsm:kvm, для этого необходимо выполнить команду:

chown 36:36 -R /qcow2

3. Создание ВМ из шаблонов

Для создания ВМ из шаблона, используется модуль ovirt_vm с параметрами template.

Простой пример Task’и, с помощью которой можно создать ВМ из шаблона, представлен ниже:

- name: Create VM
  ovirt_vm:
    state: present
    cluster: Default
    name: VMName
    template: TemplateName

Если нужно создать ВМ из шаблона с предразмеченным диском, шаблон также должен быть создан с использованием RAW-формата дисков, а также указать следующие параметры: disk_format: raw и clone: true.

Пример task’и представлен ниже:

- name: Create VM
  ovirt_vm:
    state: present
    cluster: Default
    name: VMName
    template: TemplateName
    storage_domain: StorageDomainName     # этот параметр позволяет указать в каком домене хранения создать диски ВМ
    disk_format: raw
    clone: true                           # с помощью двух последних параметров можно создать ВМ с предразмеченными дисками из шаблона