Update vmcreate1.sh

This commit is contained in:
2025-10-25 13:17:18 +00:00
parent 4f045ffe5a
commit 6b2b6ffaf9

View File

@@ -7,6 +7,8 @@
storage="syno-tigra" storage="syno-tigra"
path="/mnt/pve/$storage/snippets" path="/mnt/pve/$storage/snippets"
username="root"
password=""
show_help() show_help()
echo 'Usage:' echo 'Usage:'
@@ -53,7 +55,7 @@ fi
# Если заданы аргументы И файл # Если заданы аргументы И файл
if [[ $# -ne 0 && -v file ]]; then echo "Please enter file OR arguments. Use '-f' flag for help"; exit 0; fi if [[ $# -ne 0 && -v file ]]; then echo "Please enter file OR arguments. Use '-f' flag for help"; exit 0; fi
#Проверка файла на соответствие шаблону IPv4 адреса и hostname, создаём временный файл из валидных строк # Проверка файла на соответствие шаблону IPv4 адреса и hostname, создаём временный файл из валидных строк
if [ -e $file ]; then if [ -e $file ]; then
touch hosts.tmp touch hosts.tmp
echo -n "" > hosts.tmp echo -n "" > hosts.tmp
@@ -96,8 +98,8 @@ if [ $# -ne 0 ] then
done done
fi fi
# Функция для проверки IP адреса по шаблону 10.10.*.*, написана гуглом
ipcheck() { ipcheck() {
# Функция для проверки IP адреса по шаблону 10.10.*.*, написана гуглом
local ip=$1 local ip=$1
local stat=1 local stat=1
oldIFS=$IFS oldIFS=$IFS
@@ -114,13 +116,14 @@ ipcheck() {
IFS=$oldIFS IFS=$oldIFS
} }
# Функция для проверки hostname на валидные символы (буквы, цифры, дефис)
hostcheck (){ hostcheck (){
local hostname=$1 local hostname=$1
local pattern="^[a-zA-Z0-9-]+$" local pattern="^[a-zA-Z0-9-]+$"
if [[ "$hostname" =~ $pattern ]]; then return 0; else return 1; fi if [[ "$hostname" =~ $pattern ]]; then return 0; else return 1; fi
} }
#Проверяем ключ # Проверяем ключ
if [ -v pubkey ]; then if [ -v pubkey ]; then
if [[ ! -f pubkey ]]; then if [[ ! -f pubkey ]]; then
input=y input=y
@@ -144,14 +147,15 @@ keypair_generate (){
pubkey="$privkey".pub pubkey="$privkey".pub
} }
embed_key(){ # Функция, которая создаёт user CloudInit-файл
mksnippet(){
# #
} }
for line in $(<.hosts.tmp) for line in $(cat hosts.tmp)
do do
ip=$(echo $line | cut -d ' ' -f 1) ip=$(echo $line | cut -d ' ' -f 1)
vlan=$(echo $ip | cut -d '.' -f 3) vlan=$(echo $ip | cut -d '.' -f 3)
@@ -167,7 +171,7 @@ do
qm set $vmnum --tags 3,gfx qm set $vmnum --tags 3,gfx
## preparing custom CloudInit snippets ## preparing custom CloudInit snippets
cp ./user.yaml ${path}${vmnum}_user.yaml cp ./user.yaml ${path}${vmnum}_user.yaml
sed -i "s/HOSTNAME/$hostname/g" ${path}${vmnum}_user.yaml # sed -i "s/HOSTNAME/$hostname/g" ${path}${vmnum}_user.yaml
qm resize $vmnum scsi0 +50G qm resize $vmnum scsi0 +50G
qm set $vmnum --cicustom "user=${storage}:snippets/${vmnum}_user.yaml" qm set $vmnum --cicustom "user=${storage}:snippets/${vmnum}_user.yaml"
qm set $vmnum --ipconfig0 ip=$ip/24,gw=10.10.35.1 qm set $vmnum --ipconfig0 ip=$ip/24,gw=10.10.35.1