Estou trabalhando no meu primeiro bater script que implantará 4 VMs em um ambiente cloudstack. Eu gostaria de incluir um eco mensagem no final do script informando quantas VMs foram implantadas. Existe uma maneira de ter isso surgido no final? Toda vez que o comando é executado, o cloudstack fornece um erro ou uma mensagem de sucesso. Existe uma maneira de incorporar a mensagem "error" ou "jobid" em uma instrução IF para o último eco do meu roteiro?
Se a VM for implantada, o cloudstack retornará o seguinte:
deployvirtualmachineresponse:
id: 4fe88c45-fc7c-4ac2-9554-c815e1ada3f6
jobid: 01f52a39-8e57-4968-af34-c4ee53f29e25
Se a VM falhar devido a um erro, ou seja, o mesmo nome de VM cloudstack retornará o seguinte:
deployvirtualmachineresponse:
uuidList: []
errorcode: 431
errortext: ! 'The vm with hostName HOSTNAME01 already exists in the network
domain: cs1null; network=Ntwk[251|Guest|5]'
Se a VM falhar devido a um tempo limite da API, a pilha da nuvem retornará o seguinte:
Timeout connecting to https://cloud.datapipe.com/api/compute/v1
Meu script
#!/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
1. As mensagens não foram exibidas porque $ JOBID e $ ERROR não estão definidos, mas com base na descrição da tarefa, nenhuma variável é necessária até aqueles estão definidos.
2. O loop só é executado uma vez, não é possível implantar o CloudStack 4 vezes.
3. O último E se bloco deve ser dobrado para o anterior.
4 $ HOSTNAME está definido para a cadeia "HOSTNAME", (não uma variável). Configurá-lo para "$ HOSTNAME" funcionaria, mas é redundante.
Revisão sugerida (mas sem alterações na parte do CloudStack, que precisa de ajuda, mais tarde ...):
fonte