diff --git a/vmcreate1.sh b/vmcreate1.sh index 81ae5c5..63b37fa 100644 --- a/vmcreate1.sh +++ b/vmcreate1.sh @@ -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