2025-11-25 10:12:22 +00:00
2025-11-25 10:11:47 +00:00
2025-11-25 09:38:33 +00:00
2025-10-26 15:53:21 +00:00
2025-11-23 11:14:50 +00:00
2025-11-25 10:12:22 +00:00
2025-11-07 10:39:13 +00:00
2025-10-28 10:13:09 +00:00
2025-11-01 13:18:52 +00:00
2025-11-05 08:00:21 +00:00
2025-11-02 12:38:40 +00:00

Срипт для создания нескольких виртуальных машин одновременно с помощью 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

Создание и запуск

git -C /root/ clone https://git.tvstart.ru/dbadovsky/vmcreate.git
cd /root/vmcreate/
bash gfxcreate.sh

ВНИМАНИЕ! Нельзя закрывать консоль Proxmox до заершения работы скрипта! Либо отправлять его работу в фоновый режим:

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.
  • -t - Указать дополнительный тег proxmox создаваемых ВМ.
  • -s - Указать имя файла шаблона сниппета. По-умолчанию 'user.yaml'.
  • -f - Указать файл со списком хостов
  • -R - Запустить скрипт в режиме УДАЛЕНИЯ виртуальных машин, указанных с помощью файла или аргументов.
Description
No description provided
Readme 783 KiB
Languages
Shell 100%