Files
vmcreate/README.md
2025-10-29 10:35:59 +00:00

80 lines
5.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Срипт для создания нескольких виртуальных машин одновременно с помощью Cloud-Init.
**Имеется 2 версии скрипта: универсальный** `vmcreate.sh` **и специальный для gfx-машин Юры** `gfxcheate.sh`
# GFX-скрипт
Скрипт парсит файл `gfx_hosts`
создаёт и запускает на **pve3** виртуальные машины с заданным `IP` и `hostname` в 35 сети.
Синтаксис: ip-адрес, точка с запятой, hostname.
* 10.10.35.XX1;hostname1
* 10.10.35.XX2;hostname2
VMID формируется на основе последних двух октетов IP адреса, пример для _ip=10.10.35.21_ > `VMID=3521`
### Создание и запуск
```shell
git -C /root/ clone https://git.tvstart.ru/dbadovsky/vmcreate.git
```
```shell
cd /root/vmcreate/
```
```shell
bash gfxcreate.sh
```
**ВНИМАНИЕ! Нельзя закрывать консоль Proxmox до заершения работы скрипта!**
Либо отправлять его работу в фоновый режим:
```shell
bash vmcreate.sh &
```
Но в этом случае скрипт не будет выводить в консоль свои действия и результат.
### Ключ
Публичный ключ вшит в файл `gfx.yaml`.
### Пакеты, устанавливаемые автоматически
- qemu-guest-agent
- git
- net-tools
- python3
- python3-pip
- python3-venv
Также в `gfx.yaml` вшита команда, которая подтягивает и разворачивает python-скрипт Юры.
# Универсальный скрипт
В качестве списка используются аргументы либо файл.
В случае использования аргументов необходимо передать список IPv4-адресов в диапазоне 10.10.0.0/16.
```
bash vmcreate 10.10.MMM.XXX 10.10.NNN.YYY
```
В этом случае имена хостов сгенерируются автоматически. Например, для 10.10.35.99, hostname="vm35099".
Либо передать с флагом `-h` файл со списком в следующем формате:
```
10.10.MMM.XXX;hostnameX
10.10.NNN.YYY;hostnameY
...
```
В этом случае имена хостов будут браться из второго столбца.
VMID созданных ВМ также будет сгенегирован автоматически. Например для 10.10.35.99, **VMID=35099**; для 10.10.0.9 - **VMID=100009**.
_VMID состоит из двух частей - VLAN и последнего октета IP адреса (дополненного нулями до длины 3)_
При этом VMID и числа в автоматически сгенерированном _hostname_ совпадают.
### Файл **user.yaml** (шаблон сниппета)
Содержит ssh-ключ, имя пользователя, хэш пароля и другие настройки. Можно поменять или добавить пакеты, устанавливаемые автоматически (секция **packages:**), а также прописать команды, запускаемые после разворачивания ВМ (секция **runcmd:**). ВНИМАНИЕ. Других правок вносить не нужно, т.к. для остальных правок используются опции скрипта.
### Опции скрипта
* **-h** - Вывести подсказку.
* **-a** - Используется для добавления виртуальных машин в High Avialibility на нодах 1-3. Обязательно нужно указать имя правила (может быть любым, состоящим из букв, цифр и дефисов).
* **-k** - Указать свой публичный ключ для доступа к виртуальным машинам. Если ключ не существует, скрипт автоматически сгенерирует пару ключей и зашьёт публичный ключ в yaml-конфиг виртуальных машин, а приватный ключ выведет на экран.
* **-u** - Указать пользователя (по-умолчанию **root**). При этом заданному пользователю будут даны права sudo.
* **-p** - Указать свой пароль вместо дефолтного "полишинеля"
* **-d** - Указать свободное место (в ГБ) на системном диске, добавляемое к образу во время создания. По-умолчанию 50.
* **-n** - Указать номер ноды (1 или 2), на которую переедет ВМ после запуска. _Увеличивает время разворачивания ВМ._ Также является тэгом в proxmox. По-умолчанию 3.
* **-t** - Указать дополнительный тег proxmox создаваемых ВМ.
* **-s** - Указать имя файла шаблона сниппета. По-умолчанию 'user.yaml'.
* **-f** - Указать файл со списком хостов
* **-R** - Запустить скрипт в режиме УДАЛЕНИЯ виртуальных машин, указанных с помощью файла или аргументов.