Остановка / запуск Azure: как пройти по списку виртуальных машин и проверить статус - PullRequest
0 голосов
/ 26 августа 2018

Я пытаюсь запускать / выключать виртуальные машины параллельно, одновременно проверяя состояние электропитания, чтобы убедиться, что оно работает / освобождено.В настоящее время мой сценарий ожидает завершения работы каждой виртуальной машины, прежде чем перейти к следующей.Я хочу иметь возможность запускать / останавливать, проверять режим питания, переходить к следующему, проверять режим снова и продолжать цикл до тех пор, пока не будут выполнены все условия.

#!/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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...