私は最初に取り組んでいます バッシュ 4つのVMをクラウドスタック環境にデプロイするスクリプト。含めたいのですが エコー スクリプトの最後に、デプロイされた仮想マシンの数を示すメッセージが表示されます。最後にこれを実現する方法はありますか?コマンドが実行されるたびに、cloudstackはエラーまたは成功のメッセージを表示します。最後の「エラー」または「ジョブID」メッセージをIFステートメントに組み込む方法はありますか エコー 私のスクリプトの?
VMがデプロイされている場合、cloudstackは以下を返します。
deployvirtualmachineresponse:
id: 4fe88c45-fc7c-4ac2-9554-c815e1ada3f6
jobid: 01f52a39-8e57-4968-af34-c4ee53f29e25
VMがエラーのために失敗した場合、つまり、同じVM名のcloudstackは以下を返します。
deployvirtualmachineresponse:
uuidList: []
errorcode: 431
errortext: ! 'The vm with hostName HOSTNAME01 already exists in the network
domain: cs1null; network=Ntwk[251|Guest|5]'
APIのタイムアウトが原因でVMが失敗した場合、クラウドスタックは以下を返します。
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