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