[Azure] ARM テンプレート読み解き (テンプレートからの出力)
はじめに
Azure QuickStart Templates を読み込んで勉強しよう!
ということで、アウトプットもしてみます。第7弾です。
今回の読み解き対象
Create a standard storage account
テンプレートの概要
こちらのテンプレートをデプロイすると、Storage Account を作成することができます。
が、この ARM テンプレートから得られるポイントは、Storage Account がどうこうではなくテンプレート実行後に情報を出力できるという部分です。
読み解く
毎度ですが、よくあるテンプレートのパターンは下記の通りです。
- パラメータ指定 (parameters)
 - 変数の設定 (variables)
 - デプロイするリソースの記述 (resources)
 
が、今回はここにもう一つ追加があります。最後に "outputs": という箇所がありますね。つまり、こうなります。
- パラメータ指定 (parameters)
 - 変数の設定 (variables)
 - デプロイするリソースの記述 (resources)
 - 実行後のアウトプット (outputs)
 
では、見ていきましょう。
パラメータ指定 (parameters)
前半の "parameters": から始まる部分では、テンプレート内で使われるパラメータ (変数) の設定です。テンプレートのデプロイ時に選択肢として表示させたりすることができます。
今回のテンプレートでは、「Storage Account の Type」と「作成先のリージョン」を指定させています。
変数の設定 (variables)
"variables": セクションでは、この yaml ファイル中で利用する変数名を設定できます。
  "variables": {
    "storageAccountName": "[concat('store', uniquestring(resourceGroup().id))]"
  },
このテンプレートでは、作成する Storage Account の名前をパラメータから生成しています。
uniquestring() は引数からハッシュ文字列を生成する関数、concat() は、ざっくり言えば引数の文字列を全て結合する関数です。
参考 : uniqueString
参考 : concat
デプロイするリソースの記述 (resources)
"resources": セクションで、デプロイするリソースを記述しています。
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2019-06-01",
      "name": "[variables('storageAccountName')]",
      "location": "[parameters('location')]",
      "sku": {
        "name": "[parameters('storageAccountType')]"
      },
      "kind": "StorageV2",
      "properties": {}
    }
  ],
めちゃくちゃシンプルですね。パラメータに基づいて、Storage Account を作成しているだけです。
参考 : Microsoft.Storage storageAccounts template reference
実行後のアウトプット (outputs)
"outputs": セクションで、出力、つまり実行後に残しておきたい情報を出力させる設定が可能です。
  "outputs": {
    "storageAccountName": {
      "type": "string",
      "value": "[variables('storageAccountName')]"
    }
  }
ここでは、テンプレート中で生成されたハッシュ値を出力させています。
こうすることで、実行後に「あっ、テンプレート実行で生成されたパラメータが必要だ…。各リソースのページに行ってコピペして…」という面倒な作業を回避することができるわけですね!
参考 : ARM テンプレート内の出力
最後に
Azure QuickStart Templates 読み解きの記事も 7 個目になりました😊
他の記事も、こちらから見ていただければ嬉しいです!
Discussion