Update vmcreate1.sh

This commit is contained in:
2025-10-25 17:27:23 +00:00
parent d4353d6b3c
commit 39748776c5

View File

@@ -3,12 +3,13 @@
# Сделать проверку, какие правила НА существуют, и вывести выбор /etc/pve/ha/rules.cfg
# Сделать добавление кастомного полльзователя с паролем
# Сделать замену тега влан
# Сделать проверку наличия ВМ перед клонированием. Если создать ВМ не удалось, скипаем, а не выходим.
# Сделать проверку наличия ВМ перед клонированием.
# Добавить переезд на ноду, выбор ноды
# ИЗУЧИТЬ!!!! /usr/share/pve-docs/examples/guest-example-hookscript.pl
storage="syno-tigra"
path="/mnt/pve/$storage/snippets"
node=3
show_help()
echo 'Usage:'
@@ -62,19 +63,20 @@ if [ -e $file ]; then
for line in $(<$file); do
ip=$(echo $line | cut -d ' ' -f 1)
hostname=$(echo $line | cut -d ' ' -f 2)
ipcheck "$ip"
if [ $? -eq 0 ]; then
hostcheck "$hostname"
if [ $? -eq 0 ];
then
echo $line >> hosts.tmp
else
echo "Hostname `$hostname` is not valid. Should contain only letters, numbers and dash. Skipping this line."
sleep 2
echo "Hostname `$hostname` is not valid. Should contain only letters, numbers and dash. Aborting."
rm hosts.tmp
exit 5
fi
else
echo "$ip is not a valid IPv4 address (10.10.*.*). Skipping this line."
sleep 2
echo "`$ip` is not a valid IPv4 address (10.10.*.*). Aborting."
rm hosts.tmp
exit 6
fi
done
fi
@@ -91,9 +93,11 @@ if [ $# -ne 0 ] then
echo -n "vm" >> ./hosts.tmp
printf "%03d\n" "$(echo -n $arg | cut -d '.' -f 3)" >> ./hosts.tmp
printf "%03d\n" "$(echo -n $arg | cut -d '.' -f 4)" >> ./hosts.tmp
echo >> ./hosts.tmp
echo >> hosts.tmp
else
echo "Argument `$arg` is not a valid IPv4 address (10.10.*.*). Using next argument."
echo "Argument `$arg` is not a valid IPv4 address (10.10.*.*). Aborting."
rm hosts.tmp
exit 5
fi
done
fi
@@ -152,25 +156,27 @@ mksnippet (){
sed -i "s/HOSTNAME/$hostname/g" ${path}${vmnum}_user.yaml
if [[ -v $username ]];
then sed -i "s|user: root|user: ${username}\nsudo: ALL=(ALL) NOPASSWD:ALL|"
fi
if [[ -v $username ]];
then sed -i "s|user: root|user: ${username}\nsudo: ALL=(ALL) NOPASSWD:ALL|"
fi
}
for line in $(cat hosts.tmp)
do
ip=$(echo $line | cut -d ' ' -f 1)
vlan=$(echo $ip | cut -d '.' -f 3)
if [[ vlan -eq 0 ]]; then mask=23; gw="10.10.0.1"; else mask=24; gw="10.10.${vlan}.1"
if [[ vlan -eq 0 ]]; then mask=23; gw="10.10.0.1"; else mask=24; gw="10.10.${vlan}.1"; fi
hostname=$(echo $line | cut -d ' ' -f 2)
vmnum=$(echo $ip | cut -d '.' -f 3,4 | sed 's/\.//')
if [[ $vlan -eq 0 ]]; then $vlan=100
if [[ $vlan -eq 0 ]]; then $vlan=100; fi
qm clone 5000 $vmnum --name $hostname --full
if [ $? -eq 0 ]
then echo "clone OK"
else "clone ERROR"; exit 1
fi
qm set $vmnum --tags 3,gfx
## preparing custom CloudInit snippets
fi
qm set $vmnum --tags $node,gfx
mksnippet
qm resize $vmnum scsi0 +50G
qm set $vmnum --cicustom "user=${storage}:snippets/${vmnum}_user.yaml"
qm set $vmnum --ipconfig0 ip=$ip/24,gw=10.10.35.1