Я работаю над своим первым скриптом bash , который развернет 4 виртуальные машины в облачной среде. Я хотел бы добавить эхо- сообщение в самом конце сценария, в котором указано, сколько виртуальных машин было развернуто. Есть ли способ сделать это в самом конце? Каждый раз, когда команда запускается, cloudtack выдает ошибку или сообщение об успехе. Есть ли способ включить сообщение "error" или "jobid" в оператор IF для самого последнего эха моего скрипта?
Если виртуальная машина развернута, облачный стек возвращает следующее:
deployvirtualmachineresponse:
id: 4fe88c45-fc7c-4ac2-9554-c815e1ada3f6
jobid: 01f52a39-8e57-4968-af34-c4ee53f29e25
Если виртуальная машина дает сбой из-за ошибки, то есть то же имя облака VM возвращает следующее:
deployvirtualmachineresponse:
uuidList: []
errorcode: 431
errortext: ! 'The vm with hostName HOSTNAME01 already exists in the network
domain: cs1null; network=Ntwk[251|Guest|5]'
В случае сбоя виртуальной машины из-за тайм-аута API облачный стек возвращает следующее:
Timeout connecting to https://cloud.datapipe.com/api/compute/v1
Мой сценарий
#!/bin/bash
HOSTNAME=HOSTNAME
vm_deployed=0
vm_failed=0
for i in {1..1}; do
if cloudstack virtualmachine deploy \
--serviceofferingid 48 \
--templateid XXX \
--zoneid 7 \
--keypair XXX \
--securitygroupids XXX \
--name $(printf "%s%02d" $HOSTNAME $i);
then
(( ++vm_deployed ))
else
(( ++vm_failed ))
fi
done
if [ "$JOBID" ] || [ "$ERROR" ]; then
if (( vm_failed > 0 )); then
echo "deployed $vm_deployed, failed $vm_failed VMs"
else
echo "deployed all $vm_deployed VMs"
fi
fi
if (( vm_failed > 0 )); then
exit 1
fi