0

DevTest Labs仮想マシンの自動起動機能を作成の一部として有効にする方法はありますか?つまり、VMのARMテンプレートに追加することはできますか?DevTest Labs仮想マシン自動起動

私はこれを現在Azureポータルから手動で有効にしていますが、Team Servicesからの後続の展開が行われると無効になることがわかりました。私は、次のPowerShellスクリプトを微調整し、簡素化するために管理している以下のアショクから受け入れ答えに触発さ

ソリューション

、...

Param([string] $resourceId) 

$tags = (Get-AzureRmResource -ResourceId $resourceId).Tags 

if (-Not ($tags) -Or -Not($tags.ContainsKey('AutoStartOn'))) { 
    $tags += @{ AutoStartOn=$true; } 
} 

if (-Not ($tags) -Or -Not($tags.ContainsKey('AlwaysOn'))) { 
    $tags += @{ AlwaysOn=$true; } 
} 

Set-AzureRmResource -ResourceId $resourceId -Tag $tags -Force 
+0

どのようにTeam Servicesから後で展開しますか? –

+0

Team Servicesのリリース定義の一部として、** DevTest Labs VMの作成**タスクを使用して、マシンがdeployemntより前に利用可能であることを確認します。私は、このプロセスがマシンに**自動開始**タグを失わせている原因と推測できます。おそらく、VM作成中にARMテンプレートが提供されたためでしょうか?おそらく、以下のAshokの答えにあるPowerShellなど、これを処理する別の方法があります。 – smd

+0

Get-AzureRmResourceコマンドで必要な情報を取得できますか? "$ VmResourceId ="サブスクリプション/ $サブスクリプション/リソースグループ/ $ labResourceGroup /プロバイダー/ microsoft.devtestlab/labs/$ labName/virtualmachines/$ VmName " $ vm = Get-AzureRmResource-ResourceId $ VmResourceId -ExpandProperties' –

答えて

2

自動起動ポリシーが必要ですポリシーを有効にした後で、VMを明示的に選択し、そのコンテキストメニューからポリシーを適用する必要があります。つまり、不要なVMが誤って自動的に起動され、予期せぬ支出が発生する状況に簡単に陥ることはありません。詳細については

、次の資料を参照してください。

https://azure.microsoft.com/en-us/updates/azure-devtest-labs-schedule-vm-auto-start/

更新:

次のPS機能を試すことができます。タグコレクションは全体的に置き換えなければならないことに注意してください。そのため、既存の値が存在する場合は、コレクションに追加するか、既存の値を変更するかを確認するロジックが表示されます。それ以外の場合は、他のタグを削除します。

function Enable-AzureDtlVmAutoStart 
{ 
    [CmdletBinding()] 
    param(
     [string] $ResourceId, 
     [switch] $AlwaysOn 
    ) 

    $autoStartOnTagName = 'AutoStartOn' 
    $alwaysOnTagName = 'AlwaysOn' 

    $labVm = Get-AzureRmResource -ResourceId $ResourceId 
    $tags = $labVm.Tags 

    # Undefined tags collection can happen if the Lab VM never had any tags set. 
    if (-not $tags) 
    { 
     $tags = @(@{},@{}) 
    } 

    # Update the tags if they already exist in the collection. 
    $tags | % { 
     if ($_.Name -eq $autoStartOnTagName) 
     { 
      $_.Value = $true 
     } 
     if ($_.Name -eq $alwaysOnTagName) 
     { 
      $_.Value = $true 
     } 
    } 
    # Otherwise, create new tags. 
    if (-not ($tags | ? { $_.Name -eq $autoStartOnTagName })) 
    { 
     $tags += @{Name=$autoStartOnTagName;Value=$true} 
    } 
    if (-not ($tags | ? { $_.Name -eq $alwaysOn })) 
    { 
     $tags += @{Name=$alwaysOnTagName;Value=$AlwaysOn} 
    } 

    Set-AzureRmResource -ResourceId $ResourceId -Tag $tags -Force 
} 
+0

返信ありがとう。私はこのオンライン質問に答える前に、可能な解決策を検討していましたが、上のPSアプローチに遭遇しました。これは問題ありません。それでもサーバーが再作成されていなくても、自分で管理する必要があるにも関わらず、自動起動が無効になるのは私にとっては奇妙なことです。 – smd

関連する問題