Для работы Ansible с гипервизором Proxmox, написан соответствующий модуль [proxmox_kvm](https://docs.ansible.com/ansible/latest/collections/community/general/proxmox_kvm_module.html).
В свою очередь, для работы модуля `proxmox_kvm` на хосте Proxmox, необходимо установить пакеты `requests` и `proxmoxer`.
Т.к. Ansible написан на Python, необходимые ему пакеты можно установить с помощью PIP.
Для установки PIP для Python 2 - `sudo apt install python-pip`
Для установки PIP для Python 3 (предпочтительнее) - `sudo apt install python3-pip`
Далее установим необходимые пакеты:
_в зависимости от способа установки Python и PIP, команда для установки пакетов может отличаться. В общем случае, команда выглядит так:_
ВМ создаются из существующего шаблона. При этом, необходимо, чтобы шаблон был с поддержкой cloudinit. Здесь возможны 2 варианта, создать такой шаблон самостоятельно или скачать готовый образ.
Я подготовил скрипт, который скачивает официальный образ Ubuntu с поддержкой cloudinit и на основании этого образа создаётся шаблон.
Скрипт `create_template.sh` необходимо скопировать на хост Proxmox, добавить права на исполнение.
Скрипт необходимо запустить от имени пользователя, который может создавать и редактировать ВМ (по-умолчанию это `root`). При запуске нужно придумать и указать в качестве аргумента пароль, который будет добавлен для авторизации пользователя, указанного в переменной `vm_user`
Используемые в плейбуке переменные разделены на два файла: `vars.yaml`, `vms.yaml`. Это разделение сделано для удобства, чтобы отделить переменные виртуальных машин.
_за основу были взяты примеры из документации <https://docs.ansible.com/ansible/latest/collections/community/general/proxmox_kvm_module.html#examples>_</br>
При клонировании из шаблона, ВМ создаются с теми же параметрами, что и сам шаблон. Выполнение этой задачи позволяет изменить параметры ВМ, например размер оперативной памяти, количество доступных процессоров и т.д.
Для доступа к ВМ по SSH необходимо использовать имя пользователя, которое определено в переменной `vm_user` в скрипте `create_template.sh`. При подключении с хоста, на котором запускался плейбук пароль вводить не нужно, т.к. в ВМ скопирован SSH ключ. При подключении из других систем, необходимо указать пароль, который был задан в виде аргумента при запуске скрипта `create_template.sh`.