Управление инфраструктурой виртуальных машин с помощью Ansible
Пояснение
В состав oVirt Ansible Collection входит роль vm_infra. Данная роль позволяет управлять инфраструктурой виртуальных машин в zVirt. Также данная роль также позволяет вести Inventory-файл созданных машин и группировать их на основе тэгов.
Примеры использования предполагают запуск Playbook с Менеджера управления, подробная информацию о запуске Playbook с внешнего хоста представлена во Введении в автоматизацию работы zVirt с помощью Ansible.
1. Использование
1.1. Общая структура
Для работы с данной ролью нужно использовать определённую структуру Playbook. Данная структура состоит из 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