Поделиться через


Запуск и завершение работы виртуальных машин в DevTest Labs с помощью командной строки

В этой статье показано, как запускать или останавливать виртуальные машины Azure DevTest Labs с помощью командной строки и скриптов Azure PowerShell или Azure CLI.

Вы можете запускать, останавливать и перезапускать виртуальные машины DevTest Labs с помощью портала Azure. Вы также можете использовать портал для настройки расписаний и политик автоматического запуска и автоматического завершения работы для виртуальных машин лаборатории.

Если вы хотите создать скрипт либо автоматизировать запуск или остановку для виртуальных машин лаборатории, используйте команды PowerShell или Azure CLI. Например, с помощью команд запуска и остановки можно выполнять следующие задачи:

  • Тестировать трехуровневое приложение, где уровни должны запускаться в определенной последовательности.
  • Отключать виртуальные машины для экономии затрат на основе заданных вами условий.
  • Запускать процесс непрерывной поставки и непрерывной интеграции (CI/CD) и останавливать его после завершения. Пример этого рабочего процесса см. в разделе Запуск фабрики образов из Azure DevOps.

Предварительные требования

Сценарий Azure PowerShell

Следующий скрипт PowerShell запускает или останавливает виртуальную машину в лаборатории с помощью команды Invoke-AzResourceAction. Параметр ResourceId — это полный идентификатор виртуальной машины лаборатории, которую вы хотите запустить или остановить. Параметр Action определяет, следует ли запускать или останавливать виртуальную машину в зависимости от выбранного вами действия.

  1. На рабочей станции используйте командлет PowerShell Connect-AzAccount для входа в учетную запись Azure. Если у вас несколько подписок Azure, раскомментируйте строку Set-AzContext и укажите нужное значение <Subscription ID>.

    # Sign in to your Azure subscription
    $sub = Get-AzSubscription -ErrorAction SilentlyContinue
    if(-not($sub))
    {
        Connect-AzAccount
    }
    
    # Set-AzContext -SubscriptionId "<Subscription ID>"
    
  2. Укажите значения параметров <lab name> и <VM name> и выберите нужное действие для <Start or Stop>.

    $devTestLabName = "<lab name>"
    $vMToStart = "<VM name>"
    
    # The action on the virtual machine (Start or Stop)
    $vmAction = "<Start or Stop>"
    
  3. Запустите или остановите виртуальную машину в зависимости от значения, переданного в $vmAction.

    # Get the lab information
    $devTestLab = Get-AzResource -ResourceType 'Microsoft.DevTestLab/labs' -ResourceName $devTestLabName
    
    # Start or stop the VM and return a succeeded or failed status
    $returnStatus = Invoke-AzResourceAction `
                        -ResourceId "$($devTestLab.ResourceId)/virtualmachines/$vMToStart" `
                        -Action $vmAction `
                        -Force
    
    if ($returnStatus.Status -eq 'Succeeded') {
        Write-Output "##[section] Successfully updated DTL machine: $vMToStart, Action: $vmAction"
    }
    else {
        Write-Error "##[error] Failed to update DTL machine: $vMToStart, Action: $vmAction"
    }
    

Скрипт Azure CLI

Следующий скрипт предоставляет команды Azure CLI для запуска или остановки виртуальной машины лаборатории. Переменные в этом скрипте предназначены для среды Windows, например командной строки. Для bash и других сред инструкции немного другие.

  1. Укажите соответствующие значения параметров <Subscription ID>, <lab name>, и <VM name>, а также выберите действие <Start or Stop>.

    set SUBSCRIPTIONID=<Subscription ID>
    set DEVTESTLABNAME=<lab name>
    set VMNAME=<VM name>
    set ACTION=<Start or Stop>
    
  2. Войдите в учетную запись Azure. Если у вас несколько подписок Azure, раскомментируйте строку az account set, чтобы использовать указанный идентификатор подписки.

    az login
    
    REM az account set --subscription %SUBSCRIPTIONID%
    
  3. Имя группы ресурсов, содержащей лабораторию.

    az resource list --resource-type "Microsoft.DevTestLab/labs" --name %DEVTESTLABNAME% --query "[0].resourceGroup"
    
  4. Замените <resourceGroup> значением, которое использовали на предыдущем шаге.

    set RESOURCEGROUP=<resourceGroup>
    
  5. В командной строке выполните команду для запуска или остановки виртуальной машины на основе переданного в ACTION значения.

    az lab vm %ACTION% --lab-name %DEVTESTLABNAME% --name %VMNAME% --resource-group %RESOURCEGROUP%
    

Дальнейшие действия