Update README.md

This commit is contained in:
2025-10-28 10:31:19 +00:00
parent c13c0f21e1
commit 7ad8a137b7

View File

@@ -1,15 +1,17 @@
# Срипт для создания и удаления нескольких виртуальных машин одновременно. # Срипт для создания нескольких виртуальных машин одновременно с помощью Cloud-Init.
Скрипт парсит файл `hosts` **Имеется 2 версии скрипта: универсальный** `vmcreate.sh` **и специальный для gfx-машин Юры** `gfxcheate.sh`
создаёт и запускает на кластере виртуальные машины с заданным `IP` и `hostname` в 35 сети.
Синтаксис: ip-адрес, пробел, hostname. # GFX-скрипт
Скрипт парсит файл `gfx_hosts`
создаёт и запускает на **pve3** виртуальные машины с заданным `IP` и `hostname` в 35 сети.
* XXX.XXX.XXX.XX1 HOSTNAME1 Синтаксис: ip-адрес, точка с запятой, hostname.
* XXX.XXX.XXX.XX2 HOSTNAME2
VMID формируется на основе последних двух октетов IP адреса _ip=10.10.35.21_ > `VMID=3521` * 10.10.35.XX1;hostname1
* 10.10.35.XX2;hostname2
# Создание и запуск VMID формируется на основе последних двух октетов IP адреса, пример для _ip=10.10.35.21_ > `VMID=3521`
### Создание и запуск
```shell ```shell
git -C /root/ clone https://git.tvstart.ru/dbadovsky/vmcreate.git git -C /root/ clone https://git.tvstart.ru/dbadovsky/vmcreate.git
``` ```
@@ -17,7 +19,7 @@ git -C /root/ clone https://git.tvstart.ru/dbadovsky/vmcreate.git
cd /root/vmcreate/ cd /root/vmcreate/
``` ```
```shell ```shell
bash vmcreate.sh bash gfxcreate.sh
``` ```
**ВНИМАНИЕ! Нельзя закрывать консоль Proxmox до заершения работы скрипта!** **ВНИМАНИЕ! Нельзя закрывать консоль Proxmox до заершения работы скрипта!**
Либо отправлять его работу в фоновый режим: Либо отправлять его работу в фоновый режим:
@@ -26,10 +28,10 @@ bash vmcreate.sh &
``` ```
Но в этом случае скрипт не будет выводить в консоль свои действия и результат. Но в этом случае скрипт не будет выводить в консоль свои действия и результат.
# Ключ ### Ключ
публичный ключ находится в файле `user.yaml` Публичный ключ вшит в файл `gfx.yaml`.
# Пакеты, устанавливаемые автоматически ### Пакеты, устанавливаемые автоматически
- qemu-guest-agent - qemu-guest-agent
- git - git
- net-tools - net-tools
@@ -37,10 +39,36 @@ bash vmcreate.sh &
- python3-pip - python3-pip
- python3-venv - python3-venv
# Удаление Также в `gfx.yaml` вшита команда, которая подтягивает и разворачивает python-скрипт Юры.
```shell
cd /root/vmcreate/ # Универсальный скрипт
В качестве списка используются аргументы либо файл.
В случае использования аргументов необходимо передать список IPv4-адресов в диапазоне 10.10.0.0/16.
``` ```
```shell bash vmcreate 10.10.MMM.XXX 10.10.NNN.YYY
bash remove.sh
``` ```
В этом случае имена хостов сгенерируются автоматически. Например, для 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** - указать свой пароль вместо дефолтного "полишинеля"
* **