From 94b47cd137bf2f9fb5e1d73a0334a9538ea6498e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=94=D0=BE=D0=BB=D0=B3=D0=B8=D0=B9=20=D0=90=D1=80=D1=82?= =?UTF-8?q?=D1=91=D0=BC?= Date: Sat, 8 Jan 2022 17:04:08 +0300 Subject: [PATCH] readme mod --- readme.md | 184 ++++++++++++++++++++++++++++-------------------------- 1 file changed, 94 insertions(+), 90 deletions(-) diff --git a/readme.md b/readme.md index caca9c7..6fcf1ae 100644 --- a/readme.md +++ b/readme.md @@ -1,27 +1,28 @@ # Автоматизация процесса создания ВМ в Proxmox с использованием Ansible -## Содержание -- [Требования](#требования) -- [Создание шаблона](#создание-шаблона) -- [Создание ВМ с помощью Ansible](#создание-вм-с-помощью-ansible) - - [Необходимые файлы](#необходимые-файлы) - - [Описание переменных](#описание-переменных) - - [Задачи плейбука](#задачи-плейбука) -- [Подключение к ВМ](#подключение-к-вм) +## Содержание + +- [Требования](#требования) +- [Создание шаблона](#создание-шаблона) +- [Создание ВМ с помощью Ansible](#создание-вм-с-помощью-ansible) + - [Необходимые файлы](#необходимые-файлы) + - [Описание переменных](#описание-переменных) + - [Задачи плейбука](#задачи-плейбука) +- [Подключение к ВМ](#подключение-к-вм) ## Требования -Для работы 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, команда для установки пакетов может отличаться. В общем случае, команда выглядит так:* -``` -pip install requests -pip install proxmoxer -``` +Для работы 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, команда для установки пакетов может отличаться. В общем случае, команда выглядит так:_ + + pip install requests + pip install proxmoxer [⬆ Наверх](#содержание) @@ -32,33 +33,31 @@ pip install proxmoxer Скрипт `create_template.sh` необходимо скопировать на хост Proxmox, добавить права на исполнение. -Стоит обратить внимание на объявленные в скрипте переменные: -*скачиваемый образ и его URL* -``` -cloudimg=focal-server-cloudimg-amd64.img # имя скачиваемого образа -img_url=https://cloud-images.ubuntu.com/focal/current # адрес, по которому доступен образ -``` +Стоит обратить внимание на объявленные в скрипте переменные: +_скачиваемый образ и его URL_ -*параметры создаваемого шаблона* -``` -vm_id=200 # идентификатор создаваемого шаблона -vm_name="ubuntu-2004-cloudinit-template" # имя создаваемого шаблона -vm_memory=2048 # объем оперативной памяти выделяемый шаблону -vm_cores=2 # количество ядер процессора доступных шаблону -vm_user="da2001" # имя пользвателя, который будет создан в шаблоне -``` + cloudimg=focal-server-cloudimg-amd64.img # имя скачиваемого образа + img_url=https://cloud-images.ubuntu.com/focal/current # адрес, по которому доступен образ -*переменные, относящиеся к гипервизору Proxmox* -``` -px_storage=local-lvm # хранилище, в котором будет размещен диск шаблона -px_bridge=vmbr1 # имя сетевого интерфейса к которому будет подключен шаблон -``` +_параметры создаваемого шаблона_ -**необходимо изменить значения переменных на свои** + vm_id=200 # идентификатор создаваемого шаблона + vm_name="ubuntu-2004-cloudinit-template" # имя создаваемого шаблона + vm_memory=2048 # объем оперативной памяти выделяемый шаблону + vm_cores=2 # количество ядер процессора доступных шаблону + vm_user="da2001" # имя пользвателя, который будет создан в шаблоне -Скрипт необходимо запустить от имени пользователя, который может создавать и редактировать ВМ (по-умолчанию это `root`). При запуске нужно придумать и указать в качестве аргумента пароль, который будет добавлен для авторизации пользователя, указанного в переменной `vm_user` +_переменные, относящиеся к гипервизору Proxmox_ + + px_storage=local-lvm # хранилище, в котором будет размещен диск шаблона + px_bridge=vmbr1 # имя сетевого интерфейса к которому будет подключен шаблон + +**необходимо изменить значения переменных на свои** + +Скрипт необходимо запустить от имени пользователя, который может создавать и редактировать ВМ (по-умолчанию это `root`). При запуске нужно придумать и указать в качестве аргумента пароль, который будет добавлен для авторизации пользователя, указанного в переменной `vm_user` Пример запуска скрипта + ```bash root@pve:~# ./create_template.sh verySecPassword ``` @@ -70,81 +69,86 @@ root@pve:~# ./create_template.sh verySecPassword ## Создание ВМ с помощью Ansible ### Необходимые файлы + Для корректной работы плейбука необходимы следующие файлы: -- `ansible.cfg` - файл общих настроек ansible -- `create_vm.yaml` - файл плейбука -- `hosts.ini` - файл инвентаря, в котором указан, единственный в данном примере хост Proxmox -- `vars.yaml` - используемые переменные -- `vms.yaml` - переменные с описанием создаваемых ВМ + +- `ansible.cfg` - файл общих настроек ansible +- `create_vm.yaml` - файл плейбука +- `hosts.ini` - файл инвентаря, в котором указан, единственный в данном примере хост Proxmox +- `vars.yaml` - используемые переменные +- `vms.yaml` - переменные с описанием создаваемых ВМ [⬆ Наверх](#содержание) ### Описание переменных -Используемые в плейбуке переменные разделены на два файла: `vars.yaml`, `vms.yaml`. Это разделение сделано для удобства, чтобы отделить переменные виртуальных машин. + +Используемые в плейбуке переменные разделены на два файла: `vars.yaml`, `vms.yaml`. Это разделение сделано для удобства, чтобы отделить переменные виртуальных машин. `vars.yaml` -``` -pve_storage: local-lvm # название хранилища на котором будут созданы ВМ -api_host: 192.168.13.9 # IP адрес хоста Proxmox -api_user: root@pam # данные для авторизации по API -api_password: securePassword # пароль для авторизации -node: pve # имя ноды Proxmox -clone_vm: ubuntu-2004-cloudinit-template # имя шаблона из которого создаются ВМ -key_name: id_rsa.pub # имя SSH ключа, который будет скопирован в ВМ для дальнейшего доступа к ним -``` + + pve_storage: local-lvm # название хранилища на котором будут созданы ВМ + api_host: 192.168.13.9 # IP адрес хоста Proxmox + api_user: root@pam # данные для авторизации по API + api_password: securePassword # пароль для авторизации + node: pve # имя ноды Proxmox + clone_vm: ubuntu-2004-cloudinit-template # имя шаблона из которого создаются ВМ + key_name: id_rsa.pub # имя SSH ключа, который будет скопирован в ВМ для дальнейшего доступа к ним `vms.yaml` -``` -vms: - us1: - name: us10.da2001.ru # имя создаваемой ВМ - ip: 192.168.10.21/24 # IP адрес ВМ - gw: 192.168.10.9 # IP адрес шлюза по-умолчанию, который будет прописан в ВМ (адрес гипервизора) - dns: 8.8.8.8 # IP адрес DNS сервера - vmid: 201 # идентификатор создаваемой ВМ - cores: 2 # количество доступных процессоров для ВМ, если отличается от указанных в шаблоне - sockets: 1 # количество доступных сокетов для ВМ, если отличается от указанных в шаблоне - memory: 2048 # количество доступной оперативной памяти для ВМ, если отличается от указанного значения в шаблоне - us2: - name: us11.da2001.ru - ip: 192.168.10.22/24 - gw: 192.168.10.9 - dns: 8.8.8.8 - vmid: 202 - cores: 2 - sockets: 1 - memory: 2048 -``` + + vms: + us1: + name: us10.da2001.ru # имя создаваемой ВМ + ip: 192.168.10.21/24 # IP адрес ВМ + gw: 192.168.10.9 # IP адрес шлюза по-умолчанию, который будет прописан в ВМ (адрес гипервизора) + dns: 8.8.8.8 # IP адрес DNS сервера + vmid: 201 # идентификатор создаваемой ВМ + cores: 2 # количество доступных процессоров для ВМ, если отличается от указанных в шаблоне + sockets: 1 # количество доступных сокетов для ВМ, если отличается от указанных в шаблоне + memory: 2048 # количество доступной оперативной памяти для ВМ, если отличается от указанного значения в шаблоне + us2: + name: us11.da2001.ru + ip: 192.168.10.22/24 + gw: 192.168.10.9 + dns: 8.8.8.8 + vmid: 202 + cores: 2 + sockets: 1 + memory: 2048 **перед запуском плейбука необходимо убедиться, что установлены корректные значения переменных** [⬆ Наверх](#содержание) ### Задачи плейбука -- Клонирование ВМ из шаблона -*за основу были взяты примеры из документации https://docs.ansible.com/ansible/latest/collections/community/general/proxmox_kvm_module.html#examples* -В задаче создаются виртуальные машины на основе шаблона -конструкция + +- Клонирование ВМ из шаблона + _за основу были взяты примеры из документации _ + В задаче создаются виртуальные машины на основе шаблона + конструкция + ```yaml loop: "{{ lookup('dict', vms) }}" ``` + позволяет перебрать все необходимые ключи и значения из словаря `vms` -- Настройка IP адресов -В этой задаче назначается IP адрес для каждой созданной ВМ и IP адрес шлюза по-умолчанию +- Настройка IP адресов + В этой задаче назначается IP адрес для каждой созданной ВМ и IP адрес шлюза по-умолчанию -- Настройка DNS -Как видно из названия, в ВМ указывается IP адрес DNS сервера +- Настройка DNS + Как видно из названия, в ВМ указывается IP адрес DNS сервера -- Копирование SSH ключей в ВМ -Для беспарольного доступа в ВМ будет скопирован указанный SSH ключ хоста, на котором выполняется плейбук +- Копирование SSH ключей в ВМ + Для беспарольного доступа в ВМ будет скопирован указанный SSH ключ хоста, на котором выполняется плейбук -- Обновление параметров ВМ -При клонировании из шаблона, ВМ создаются с теми же параметрами, что и сам шаблон. Выполнение этой задачи позволяет изменить параметры ВМ, например размер оперативной памяти, количество доступных процессоров и т.д. +- Обновление параметров ВМ + При клонировании из шаблона, ВМ создаются с теми же параметрами, что и сам шаблон. Выполнение этой задачи позволяет изменить параметры ВМ, например размер оперативной памяти, количество доступных процессоров и т.д. -- Запуск ВМ -Финальным этапом будет запуск созданных ВМ +- Запуск ВМ + Финальным этапом будет запуск созданных ВМ ## Подключение к ВМ + Для доступа к ВМ по SSH необходимо использовать имя пользователя, которое определено в переменной `vm_user` в скрипте `create_template.sh`. При подключении с хоста, на котором запускался плейбук пароль вводить не нужно, т.к. в ВМ скопирован SSH ключ. При подключении из других систем, необходимо указать пароль, который был задан в виде аргумента при запуске скрипта `create_template.sh`. [⬆ Наверх](#содержание)