Запуск и завершение работы виртуальных машин в DevTest Labs с помощью командной строки
В этой статье показано, как запускать или останавливать виртуальные машины Azure DevTest Labs с помощью командной строки и скриптов Azure PowerShell или Azure CLI.
Вы можете запускать, останавливать и перезапускать виртуальные машины DevTest Labs с помощью портала Azure. Вы также можете использовать портал для настройки расписаний и политик автоматического запуска и автоматического завершения работы для виртуальных машин лаборатории.
Если вы хотите создать скрипт либо автоматизировать запуск или остановку для виртуальных машин лаборатории, используйте команды PowerShell или Azure CLI. Например, с помощью команд запуска и остановки можно выполнять следующие задачи:
- Тестировать трехуровневое приложение, где уровни должны запускаться в определенной последовательности.
- Отключать виртуальные машины для экономии затрат на основе заданных вами условий.
- Запускать процесс непрерывной поставки и непрерывной интеграции (CI/CD) и останавливать его после завершения. Пример этого рабочего процесса см. в разделе Запуск фабрики образов из Azure DevOps.
Предварительные требования
- Виртуальная машина лаборатории в DevTest Labs.
- Для Azure PowerShell на рабочей станции установлен модуль Az PowerShell. Убедитесь, что у вас установлена последняя версия. При необходимости обновите модуль с помощью команды
Update-Module -Name Az
. - Для Azure CLI: Azure CLI на рабочей станции.
Сценарий Azure PowerShell
Следующий скрипт PowerShell запускает или останавливает виртуальную машину в лаборатории с помощью команды Invoke-AzResourceAction. Параметр ResourceId
— это полный идентификатор виртуальной машины лаборатории, которую вы хотите запустить или остановить. Параметр Action
определяет, следует ли запускать или останавливать виртуальную машину в зависимости от выбранного вами действия.
На рабочей станции используйте командлет 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>"
Укажите значения параметров
<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>"
Запустите или остановите виртуальную машину в зависимости от значения, переданного в
$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 и других сред инструкции немного другие.
Укажите соответствующие значения параметров
<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>
Войдите в учетную запись Azure. Если у вас несколько подписок Azure, раскомментируйте строку
az account set
, чтобы использовать указанный идентификатор подписки.az login REM az account set --subscription %SUBSCRIPTIONID%
Имя группы ресурсов, содержащей лабораторию.
az resource list --resource-type "Microsoft.DevTestLab/labs" --name %DEVTESTLABNAME% --query "[0].resourceGroup"
Замените
<resourceGroup>
значением, которое использовали на предыдущем шаге.set RESOURCEGROUP=<resourceGroup>
В командной строке выполните команду для запуска или остановки виртуальной машины на основе переданного в
ACTION
значения.az lab vm %ACTION% --lab-name %DEVTESTLABNAME% --name %VMNAME% --resource-group %RESOURCEGROUP%