Я пытаюсь запускать / выключать виртуальные машины параллельно, одновременно проверяя состояние электропитания, чтобы убедиться, что оно работает / освобождено.В настоящее время мой сценарий ожидает завершения работы каждой виртуальной машины, прежде чем перейти к следующей.Я хочу иметь возможность запускать / останавливать, проверять режим питания, переходить к следующему, проверять режим снова и продолжать цикл до тех пор, пока не будут выполнены все условия.
#!/usr/bin/env bash
VM_IDS="$(az resource list --tag Nonessential=Yes --query "[?type=='Microsoft.Compute/virtualMachines'].{VM:name, RG:resourceGroup}" -o tsv >> vm.txt)"
cat vm.txt
if [[ "${OPTIONS}" == "stop" ]]; then
while read VM RG; do
timeout 10s az vm deallocate -g $RG -n $VM --no-wait
#PS=$(az vm show -g $RG -n $VM --show-details --query powerState -o tsv | tr -d '"')
echo "$VM is shutting down & deallocating..."
while [[ `az vm show -g $RG -n $VM --show-details --query powerState` != "VM deallocated" ]]; do
sleep 5
PS=`az vm show -g $RG -n $VM --show-details --query powerState -o tsv | tr -d '"'`
if [[ "${PS}" == "VM deallocated" ]]; then
echo "$VM has deallocated successfully..."
echo "--------------------------------------------------"
echo
break
else
echo "$VM is still deallocating..."
fi
done
done <vm.txt
elif [[ "${OPTIONS}" == "start" ]]; then
while read VM RG; do
timeout 10s az vm start -g $RG -n $VM --no-wait
#PS=$(az vm show -g $RG -n $VM --show-details --query powerState -o tsv | tr -d '"')
echo "$VM is starting..."
while [[ `az vm show -g $RG -n $VM --show-details --query powerState` != "VM running" ]]; do
sleep 5
PS=`az vm show -g $RG -n $VM --show-details --query powerState -o tsv | tr -d '"'`
if [[ "${PS}" == "VM running" ]]; then
echo "$VM has started successfully..."
echo "--------------------------------------------------"
echo
break
else
echo "$VM is still starting..."
fi
done
done <vm.txt
else
echo "Try again..."
exit 1
fi
exit 0