Управление инфраструктурой виртуальных машин с помощью Ansible

Пояснение

В состав oVirt Ansible Collection входит роль vm_infra. Данная роль позволяет управлять инфраструктурой виртуальных машин в zVirt. Также данная роль также позволяет вести Inventory-файл созданных машин и группировать их на основе тэгов.

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

1. Использование

1.1. Общая структура

Для работы с данной ролью нужно использовать определённую структуру Playbook. Данная структура состоит из 3 условных блоков:

  1. переменные, описывающие профиль виртуальной машины

  2. переменная, состоящая из составного списка

  3. запуск роли

Создание ВМ в данной роли с использованием профилей является лучшей практикой.

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

- name: zVirt VM Infra
  hosts: localhost
  connection: local
  gather_facts: false

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

    # Ниже указывается профиль для виртуальных машин, которые в дальнейшем будут выполнять роль веб-сервера
    httpd_vm:
      cluster: some_cluster
      # Параметр domain ниже отвечает за домен виртуальной машины, а не домен хранения
      domain: example.ru
      template: some_template
      memory: 2GiB
      # Количество CPU задаётся параметром cores
      cores: 2
      # Под параметром disks задаются виртуальные диски ВМ
      disks:
        - size: 20GiB
          name: data
          storage_domain: some_storage_domain
          interface: virtio
      # Под параметром nics задаются сетевые интерфейсы
      nics:
        - name: ovirtmgmt
          network: ovirtmgmt
          profile: ovirtmgmt

    # Далее указывается профиль для виртуальных машин, которые будут выполнять роль базы данных
    db_vm:
      cluster: some_cluster
      domain: example.ru
      template: some_template
      memory: 4GiB
      cores: 1
      disks:
        - size: 50GiB
          name: data
          storage_domain: some_storage_domain
          interface: virtio
      nics:
        - name: ovirtmgmt
          network: ovirtmgmt
          profile: ovirtmgmt

    # В списке vms указывается список самих виртуальных машин, которые будут созданы во время работы роли
    vms:
      - name: postgresql-vm-0
        tag: database-servers
        profile: "{{ db_vm }}"
      - name: postgresql-vm-1
        tag: database-servers
        profile: "{{ db_vm }}"
      - name: apache-vm
        tag: web-servers
        profile: "{{ httpd_vm }}"

  roles:
    - vm_infra