Share via


コマンド ラインを使用して、DevTest Labs VM を起動および停止する

この記事ではAzure PowerShell または Azure CLI のコマンド ラインやスクリプトを使用して、Azure DevTest Labs VM を起動および停止する方法について説明します。

Azure portal を使用して、DevTest Labs VM を起動、停止、または再起動できます。 ポータルを利用して、自動スタートアップおよび自動シャットダウンスケジュールと、ラボ VM のポリシーを構成することもできます。

ラボ VM の起動または停止をスクリプト化または自動化する場合は、PowerShell または Azure CLI コマンドを利用します。 たとえば、start コマンドまたは stop コマンドを使用すると、次の処理を実行できます。

  • 階層を順に開始する必要がある 3 層アプリケーションをテストします。
  • カスタム条件を満たした場合にコストを節約するために VM をオフにします。
  • 継続的インテグレーションと継続的デリバリー (CI/CD) ワークフローが開始したら開始し、それが完了したら停止します。 このワークフローの例については、「Azure DevOps からイメージ ファクトリを実行する」を参照してください。

前提条件

  • DevTest Labs 内のラボ VM
  • Azure PowerShell では、ワークステーションに Az PowerShell モジュールがインストールされている。 最新バージョンであることを確認してください。 必要に応じて、Update-Module -Name Az を実行してモジュールを更新します。
  • Azure CLI では、Azure CLI がワークステーションにインストールされている。

Azure PowerShell スクリプト

次の PowerShell スクリプトは、Invoke-AzResourceAction を使用してラボ内の VM を起動または停止します。 ResourceId パラメーターは、開始または停止するラボ VM の完全修飾 ID です。 Action パラメーターは、必要なアクションに応じて、VM の起動と停止のどちらを行うのかを決定します。

  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 に渡した値に基づいて VM を開始または停止します。

    # 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 スクリプト

次のスクリプトは、ラボ VM を起動または停止する 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 サブスクリプションがある場合は、指定したサブスクリプション ID を使用するように 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 に渡した値に基づいて、コマンドラインを実行し、VM を起動または停止します。

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

次の手順