Update vmcreate1.sh
This commit is contained in:
33
vmcreate1.sh
33
vmcreate1.sh
@@ -52,15 +52,23 @@ 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
|
||||||
|
echo -n "" > hosts.tmp
|
||||||
for line in $(<$file); do
|
for line in $(<$file); do
|
||||||
ipcheck (echo $line | cut -d '.' -f 1)
|
ipcheck (echo $line | cut -d '.' -f 1)
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
echo "$ip is not a valid IPv4 address (10.10.*.*). Skipping this line."
|
||||||
|
|
||||||
|
hostcheck (echo $line | cut -d '.' -f 2)
|
||||||
|
done
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Если заданы аргументы, то создаем временный файл
|
# Если заданы аргументы, то создаем временный файл
|
||||||
if [ $# -ne 0 ] then
|
if [ $# -ne 0 ] then
|
||||||
touch hosts.tmp
|
touch hosts.tmp
|
||||||
|
echo -n "" > hosts.tmp
|
||||||
for arg in "$@"; do
|
for arg in "$@"; do
|
||||||
ipcheck "$arg"
|
ipcheck "$arg"
|
||||||
if [ $? -eq 0 ]
|
if [ $? -eq 0 ]
|
||||||
@@ -71,12 +79,12 @@ if [ $# -ne 0 ] then
|
|||||||
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 valid IP address (10.10.*.*). Using next argument."
|
echo "Argument $arg is not a valid IPv4 address (10.10.*.*). Using next argument."
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
|
|
||||||
ip_check() {
|
ipcheck() {
|
||||||
# Функция для проверки IP адреса по шаблону 10.10.*.*, написана гуглом
|
# Функция для проверки IP адреса по шаблону 10.10.*.*, написана гуглом
|
||||||
local ip=$1
|
local ip=$1
|
||||||
local stat=1
|
local stat=1
|
||||||
@@ -94,6 +102,10 @@ ip_check() {
|
|||||||
IFS=$oldIFS
|
IFS=$oldIFS
|
||||||
}
|
}
|
||||||
|
|
||||||
|
hostcheck (){
|
||||||
|
$1
|
||||||
|
}
|
||||||
|
|
||||||
#Проверяем ключ
|
#Проверяем ключ
|
||||||
if [ -v pubkey ]; then
|
if [ -v pubkey ]; then
|
||||||
if [[ ! -f pubkey ]]; then
|
if [[ ! -f pubkey ]]; then
|
||||||
@@ -125,7 +137,7 @@ embed_key(){
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
for line in $(<$file)
|
for line in $(<.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)
|
||||||
@@ -148,22 +160,19 @@ do
|
|||||||
qm cloudinit update $vmnum
|
qm cloudinit update $vmnum
|
||||||
qm start $vmnum
|
qm start $vmnum
|
||||||
echo "VMs from $1 successfully created"
|
echo "VMs from $1 successfully created"
|
||||||
if [ haadd ]
|
if [ -v harule ]
|
||||||
then
|
then
|
||||||
ha-manager add vm:$vmnum --state started --max_relocate 2
|
ha-manager add vm:$vmnum --state started --max_relocate 2
|
||||||
ha-manager rules add node-affinity $ha_rule --resources vm:$vmnum --nodes pve1,pve2,pve3 --strict 1
|
ha-manager rules add node-affinity $harule --resources vm:$vmnum --nodes pve1,pve2,pve3 --strict 1
|
||||||
# ОБЯЗАТЕЛЬНО ПРОВЕРИТЬ КОМАНДУ!!!
|
# ОБЯЗАТЕЛЬНО ПРОВЕРИТЬ КОМАНДУ!!!
|
||||||
fi
|
fi
|
||||||
echo "HA rules added"
|
echo "HA rules added"
|
||||||
done
|
done
|
||||||
|
|
||||||
# Финальная часть
|
# Финальная часть
|
||||||
if [ -e hosts.tmp]
|
rm hosts.tmp
|
||||||
then
|
|
||||||
rm hosts.tmp
|
|
||||||
fi
|
|
||||||
if [ -v $privkey ]
|
if [ -v $privkey ]
|
||||||
then
|
then
|
||||||
echo "Generated private key $privkey"
|
echo "\nGenerated private key $privkey"
|
||||||
echo "SAVE IT IMMEDIATELY!!!"
|
echo "SAVE IT IMMEDIATELY!!!"
|
||||||
fi
|
fi
|
||||||
Reference in New Issue
Block a user