proxmox_vm_create/readme.md

78 lines
4.9 KiB
Markdown
Raw Normal View History

2022-01-06 22:39:49 +03:00
# Автоматизация процесса создания ВМ в Proxmox с использованием Ansible
2022-01-06 23:26:28 +03:00
## Содержание
- [Требования](#требования)
2022-01-06 22:43:49 +03:00
- [Создание шаблона](#создание-шаблона)
2022-01-06 23:26:28 +03:00
- [Создание ВМ с помощью Ansible](#создание-вм-с-помощью-ansible)
- [Необходимые файлы](#необходимые-файлы)
2022-01-06 22:39:49 +03:00
- [О версиях Ansible](#О-версиях-ansible)
- [Структура данных](#Структура-данных)
- [Списки](#Списки)
- [Словари (Хеш таблицы)](#Словари-Хеш-таблицы)
- [Списки словарей](#Списки-словарей)
- [Словари словарей](#Словари-словарей)
- [Циклы](#Циклы)
- [with_items](#with_items)
- [С простыми списками](#С-простыми-списками)
- [with_dict](#with_dict)
- [Полезные ссылки](#Полезные-ссылки)
- [Благодарности](#Благодарности)
2022-01-06 23:26:28 +03:00
## Требования
2022-01-06 23:27:06 +03:00
Для работы Ansible с гипервизором Proxmox, написан соответсвующий модуль [proxmox_kvm](https://docs.ansible.com/ansible/latest/collections/community/general/proxmox_kvm_module.html)
2022-01-06 23:26:28 +03:00
2022-01-06 22:39:49 +03:00
## Создание шаблона
ВМ создаются из существующего шаблона. При этом, необходимо, чтобы шаблон был с поддержкой cloudinit. Здесь возможны 2 варианта, создать такой шаблон самостоятельно или скачать готовый образ.
Я подготовил скрипт, который скачивает официальный образ Ubuntu с поддержкой cloudinit и на основании этого образа создаётся шаблон.
Скрипт `create_template.sh` необходимо скопировать на хост Proxmox, добавить права на исполнение.
Стоит обратить внимание на объявленные в скрипте переменные:
*скачиваемый образ и его URL*
```
cloudimg=focal-server-cloudimg-amd64.img # имя скачиваемого образа
img_url=https://cloud-images.ubuntu.com/focal/current # адрес, по которому доступен образ
```
*параметры создаваемого шаблона*
```
vm_id=200 # идентификатор создаваемого шаблона
vm_name="ubuntu-2004-cloudinit-template" # имя создаваемого шаблона
vm_memory=2048 # объем оперативной памяти выделяемый шаблону
vm_cores=2 # количество ядер процессора доступных шаблону
vm_user="da2001" # имя пользвателя, который будет создан в шаблоне
```
*переменные, относящиеся к гипервизору Proxmox*
```
px_storage=local-lvm # хранилище, в котором будет размещен диск шаблона
px_bridge=vmbr1 # имя сетевого интерфейса к которому будет подключен шаблон
```
**необходимо изменить значения переменных на свои**
2022-01-06 22:47:28 +03:00
Скрипт необходимо запустить от имени пользователя, который может создавать и редактировать ВМ (по-умолчанию это `root`). При запуске нужно придумать и указать в качестве аргумента пароль, который будет добавлен для авторизации пользователя, указанного в переменной `vm_user`
2022-01-06 22:39:49 +03:00
Пример запуска скрипта
```bash
root@pve:~# ./create_template.sh verySecPassword
```
**Результатом работы скрипта будет созданный шаблон, из которого с помощью ansible-playbook будут созданы ВМ**
2022-01-06 23:26:28 +03:00
[⬆ Наверх](#содержание)
## Создание ВМ с помощью Ansible
### Необходимые файлы
Для корректной работы плейбука необходимы следующие файлы:
- ansible.cfg - файл общих настроек ansible
- create_vm.yaml - файл плейбука
- hosts.ini - файл инвентаря, в котором указан, единственный в данном примере хост Proxmox
- vars.yaml - используемые переменные
- vms.yaml - переменные с описанием создаваемых ВМ
[⬆ Наверх](#содержание)
2022-01-06 22:39:49 +03:00
2022-01-06 23:26:28 +03:00
### Описание задач плейбука