自動シャットダウン機能を JSON テンプレートにて構成するには

こんにちは。Azure サポートチームの山本です。

Azure では、たった数クリックだけで、Azure Resource Manager (ARM) の環境でデプロイした仮想マシンを対象に、自動シャットダウンできる機能が追加されました。この機能により、自動シャットダウンの設定は非常に簡単になりました。
シャットダウンする時間と、タイムゾーンを指定するだけです。さらに Webhook のURLに対してシャットダウン15分前に通知を設定することもできます。
(これは、Webhook に対応した Web アプリケーションを作成しておく必要があります。)
autoshutdown
英文とはなりますが、以下に自動シャットダウンがリリースされた記事の記載がございますのでご確認くださいませ。
ご参考 : “Announcing auto-shutdown for VMs using Azure Resource Manager“
https://azure.microsoft.com/en-us/blog/announcing-auto-shutdown-for-vms-using-azure-resource-manager/


自動シャットダウン機能は、[Automation スクリプト] にはまだ実装されておりません。

Automation スクリプトとは、リソースグループ内のリソースの構成をスクリプトとして表記しているものです。
ポータルからの操作で、[ライブラリに追加] とクリックするとテンプレートに保存されます。
テンプレート機能を使っていただくと、リソースグループの複製を一度にデプロイすることが出来ます。
「一度構築したリソースグループ内の環境を使い回したい!」「今使っている環境と同じ環境をテスト用に作成したい!」という時に便利な機能となっております。

自動シャットダウンを設定した、Automation スクリプト を利用しようとすると、オレンジ色の枠で、以下のエラー文章が表記されます。
「Microsoft.DevTestLab/schedules はまだエクスポートできないため、テンプレートに含まれません。エラーの詳細を確認してください。」
errormessage

こちらのエラーは無視していただき、そのままスクリプトを利用して複製していただくことは可能ですが、自動シャットダウンの機能は無効化した状態で複製されますので、デプロイしていただいた後、個別に自動シャットダウンの設定をしていただく必要がございます。

本記事では、テンプレートをデプロイ後、自動シャットダウンの有効化について、ご紹介させていただきます。

自動シャットダウンの設定方法

- 方法1
通常の設定と同様に、該当の仮想マシンにアクセスしていただき、設定。

  1. ポータル (https://portal.azure.com/) にログイン
  2. 左メニューの [Virtual Machines] をクリックし、該当の仮想マシンを選択
  3. メニューから [自動シャットダウン] をクリックし、有効化の設定を行う

 

- 方法2
.jsonファイル を利用して設定。多くの仮想マシンに対して、同様の設定を行う場合には、有効かと存じます。

 
1) .jsonファイルを作成
Auto-shutdown は有効、スケジュールされたシャットダウンは午後6時、タイムゾーンは日本時間、15 分前の通知はオフの設定が構成されている .json ファイルとなっております。

 {
  "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "vmName": {
      "type": "string"
    }
  },
  "variables": {
    "policyName": "[concat('shutdown-computevm-', parameters('vmName'))]",
    "vmResourceId": "[resourceId('Microsoft.Compute/virtualMachines', parameters('vmName'))]"
  },
  "resources": [
    {
      "apiVersion": "2016-05-15",
      "type": "Microsoft.DevTestLab/schedules",
      "name": "[variables('policyName')]",
      "location": "[resourceGroup().location]",
      "properties": {
        "status":"Enabled",
        "timeZoneId":"Tokyo Standard Time",
        "taskType":"ComputeVmShutdownTask",
        "notificationSettings":{
          "status":"Disabled",
          "timeInMinutes":15,
          "webhookUrl":null
        },
        "targetResourceId":"[variables('vmResourceId')]",
        "dailyRecurrence":{
          "time":"1800"
        }
      }
    }
  ],
  "outputs": {
  }
}
 

Time Zone 使用例:

・GMT Standard Time = 世界標準時
・Tokyo Standard Time = 日本時間

上記と異なる時刻に合わせる場合には、以下のサイトに一覧が表となっておりますので、ご確認ください。

“Microsoft Time Zone Index Values”
https://msdn.microsoft.com/en-us/library/ms912391(v=winembedded.11).aspx

2) 作成していただいた json ファイルをサブスクリプションに登録します。

2-1) PowerShell を利用した手順

 # Azure アカウントにログイン
Login-AzureRmAccount

# サブスクリプションを選択
Select-AzureRmSubscription -SubscriptionId “サブスクリプション ID”

# リソーステンプレートの実行
New-AzureRMResourceGroupDeployment -ResourceGroupName "リソースグループ名" -TemplateURI " jsonファイルへのファイルパス” -vmName “仮想マシン名”
 実行結果:
DeploymentName          : autoshutdown
ResourceGroupName       : blogtest
ProvisioningState       : Succeeded
Timestamp               : 2017/01/26 6:41:49
Mode                    : Incremental
TemplateLink            :
Parameters              :
                          Name             Type                       Value
                          ===============  =========================  ==========
                          vmName           String                     blogtestVM
 
Outputs                 :
DeploymentDebugLogLevel :

 

2-2) ポータルからの手順
1. Marketplace から [テンプレートのデプロイ] を選択、作成
2. 上部に 表示される [編集] をクリック
3. 先ほど作成した .json ファイルを貼り付けていただき、保存
4. 該当の仮想マシンと、仮想マシンが含まれるリソースグループを入力。

以上となります。
※本情報の内容(添付文書、リンク先などを含む)は、作成日時点でのものであり、予告なく変更される場合があります。

参考情報 :
テンプレートの作成方法に関して、リソースごとにまとまっておりますので、以下をご参考にしてください。

Resource Manager テンプレートのチュートリアル
/ja-jp/azure/azure-resource-manager/resource-manager-template-walkthrough