From 7ad8a137b7620f71a52a88b3ef96759596803beb Mon Sep 17 00:00:00 2001 From: Dmitry Badovsky Date: Tue, 28 Oct 2025 10:31:19 +0000 Subject: [PATCH] Update README.md --- README.md | 62 ++++++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 45 insertions(+), 17 deletions(-) diff --git a/README.md b/README.md index 455713b..f06d28c 100644 --- a/README.md +++ b/README.md @@ -1,15 +1,17 @@ -# Срипт для создания и удаления нескольких виртуальных машин одновременно. -Скрипт парсит файл `hosts` -создаёт и запускает на кластере виртуальные машины с заданным `IP` и `hostname` в 35 сети. +# Срипт для создания нескольких виртуальных машин одновременно с помощью Cloud-Init. +**Имеется 2 версии скрипта: универсальный** `vmcreate.sh` **и специальный для gfx-машин Юры** `gfxcheate.sh` -Синтаксис: ip-адрес, пробел, hostname. +# GFX-скрипт +Скрипт парсит файл `gfx_hosts` +создаёт и запускает на **pve3** виртуальные машины с заданным `IP` и `hostname` в 35 сети. -* XXX.XXX.XXX.XX1 HOSTNAME1 -* XXX.XXX.XXX.XX2 HOSTNAME2 +Синтаксис: ip-адрес, точка с запятой, hostname. -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 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/ ``` ```shell -bash vmcreate.sh +bash gfxcreate.sh ``` **ВНИМАНИЕ! Нельзя закрывать консоль Proxmox до заершения работы скрипта!** Либо отправлять его работу в фоновый режим: @@ -26,10 +28,10 @@ bash vmcreate.sh & ``` Но в этом случае скрипт не будет выводить в консоль свои действия и результат. -# Ключ -публичный ключ находится в файле `user.yaml` +### Ключ +Публичный ключ вшит в файл `gfx.yaml`. -# Пакеты, устанавливаемые автоматически +### Пакеты, устанавливаемые автоматически - qemu-guest-agent - git - net-tools @@ -37,10 +39,36 @@ bash vmcreate.sh & - python3-pip - python3-venv -# Удаление -```shell -cd /root/vmcreate/ +Также в `gfx.yaml` вшита команда, которая подтягивает и разворачивает python-скрипт Юры. + +# Универсальный скрипт + +В качестве списка используются аргументы либо файл. +В случае использования аргументов необходимо передать список IPv4-адресов в диапазоне 10.10.0.0/16. ``` -```shell -bash remove.sh +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** - указать свой пароль вместо дефолтного "полишинеля" +* ** \ No newline at end of file