Utilizar linhas de comandos para iniciar e parar máquinas virtuais do DevTest Labs
Este artigo mostra como iniciar ou parar Azure DevTest Labs máquinas virtuais (VMs) com Azure PowerShell ou scripts e linhas de comandos da CLI do Azure.
Pode iniciar, parar ou reiniciar VMs do DevTest Labs com o portal do Azure. Também pode utilizar o portal para configurar o arranque automático e agendamentos de encerramento automático e políticas para VMs de laboratório.
Quando quiser criar scripts ou automatizar o início ou a paragem das VMs de laboratório, utilize os comandos do PowerShell ou da CLI do Azure. Por exemplo, pode utilizar comandos de início ou paragem para:
- Teste uma aplicação de três camadas, em que as camadas têm de ser iniciadas numa sequência.
- Desative as VMs para poupar custos quando cumprirem critérios personalizados.
- Comece quando um fluxo de trabalho de integração contínua e entrega contínua (CI/CD) começa e pare quando terminar. Para obter um exemplo deste fluxo de trabalho, veja Executar uma fábrica de imagens a partir do Azure DevOps.
Pré-requisitos
- Uma VM de laboratório no DevTest Labs.
- Por Azure PowerShell, o módulo do Az PowerShell instalado na sua estação de trabalho. Certifique-se de que tem a versão mais recente. Se necessário, execute
Update-Module -Name Az
para atualizar o módulo. - Para a CLI do Azure, a CLI do Azure está instalada na estação de trabalho.
script de Azure PowerShell
O seguinte script do PowerShell inicia ou para uma VM num laboratório com Invoke-AzResourceAction. O ResourceId
parâmetro é o ID completamente qualificado da VM de laboratório que pretende iniciar ou parar. O Action
parâmetro determina se deve iniciar ou parar a VM, consoante a ação necessária.
A partir da estação de trabalho, utilize o cmdlet PowerShell Connect-AzAccount para iniciar sessão na sua conta do Azure. Se tiver várias subscrições do Azure, anule o comentário da
Set-AzContext
linha e preencha a<Subscription ID>
que pretende utilizar.# Sign in to your Azure subscription $sub = Get-AzSubscription -ErrorAction SilentlyContinue if(-not($sub)) { Connect-AzAccount } # Set-AzContext -SubscriptionId "<Subscription ID>"
Forneça valores para e
<lab name>
<VM name>
e e introduza a ação que pretende para<Start or Stop>
.$devTestLabName = "<lab name>" $vMToStart = "<VM name>" # The action on the virtual machine (Start or Stop) $vmAction = "<Start or Stop>"
Inicie ou pare a VM, com base no valor que passou para
$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" }
Script da CLI do Azure
O script seguinte fornece comandos da CLI do Azure para iniciar ou parar uma VM de laboratório. As variáveis neste script destinam-se a um ambiente do Windows, como uma linha de comandos. O Bash ou outros ambientes têm ligeiras variações.
Forneça os valores adequados para
<Subscription ID>
,<lab name>
,<VM name>
e a<Start or Stop>
ação a tomar.set SUBSCRIPTIONID=<Subscription ID> set DEVTESTLABNAME=<lab name> set VMNAME=<VM name> set ACTION=<Start or Stop>
Inicie sessão na sua conta do Azure. Se tiver várias subscrições do Azure, anule o comentário da
az account set
linha para utilizar o ID de subscrição que forneceu.az login REM az account set --subscription %SUBSCRIPTIONID%
Obtenha o nome do grupo de recursos que contém o laboratório.
az resource list --resource-type "Microsoft.DevTestLab/labs" --name %DEVTESTLABNAME% --query "[0].resourceGroup"
Substitua
<resourceGroup>
pelo valor que obteve do passo anterior.set RESOURCEGROUP=<resourceGroup>
Execute a linha de comandos para iniciar ou parar a VM, com base no valor que passou para
ACTION
.az lab vm %ACTION% --lab-name %DEVTESTLABNAME% --name %VMNAME% --resource-group %RESOURCEGROUP%