テンプレートスペック(ARMテンプレート)からリソースを作成する手順

2020-03-28ARM Template,Azure,Log Analytics,Monitor,PowerShell/Azure CLI

ARMテンプレート(Azure Resource Manager テンプレート)を使用してリソースを作成する手順です。
テンプレートスペックに保管したARMテンプレートを利用し、Azure PowerShellでリソースを作成しています。
Log Analyticsワークスペースの作成を例に手順を確認しています。

    • ARMテンプレートを作成
    • テンプレートスペックを作成してARMテンプレートを保管
    • 設定値のCSVファイルを作成
    • テンプレートスペックに保管したARMテンプレートを使ってLog Analyticsワークスペースを作成

本記事では、Azure Resource Manager テンプレートをARMテンプレートとして記載しています。

スポンサーリンク

テンプレートスペックに保管したARMテンプレートを利用してAzureのリソースを作成

作成手順の概要

最初にAzure PortalでLog Analyticsワークスペースを作成します。
作成したリソースのARMテンプレートやサンプルを参考に、Log Analyticsワークスペース用のARMテンプレートを作成します。
ARMテンプレートを保管するためにテンプレートスペックを作成します。
テンプレートスペックからPowerShellを利用して、2つのLog Analyticsワークスペースを作成します。
リソースの設定値はCSVファイルから読み込むようにしています。

リソース設定値

作成したリソースの設定値です。
3つのLog Analyticsワークスペースを作成しています。
Log Analyticsワークスペース以外にもテンプレートスペックを作成しています。
テンプレートスペック名はLogAnalyticsSpecとしています。

Log Analyticsワークスペースの設定値
リソースグループ名 rg-01(共通)
Log Analyticsワークスペース名 log-01(Azure Portal)
log-02(ARMテンプレート)
log-03(ARMテンプレート)
地域(リージョン) log-01(Japan East)(Azure Portal)
log-02(Japan East)(ARMテンプレート)
log-03(Japan West)(ARMテンプレート)
価格レベル 従量課金(PerGB2018)(共通)

Log Analyticsワークスペースのリソースを作成

Log Analyticsワークスペースのリソースを作成します。

Log Analytics ワークスペースを作成する

リソース作成時に指定する内容は、リソースグループ、リソース名、リージョンなどで、項目は多くありません。

Log Analyticsワークスペースのリソースを作成

Log Analyticsワークスペースのメニューで作成を選択します。

インスタンスの詳細で名前や地域を選択します。

確認メッセージが表示されます。
画面上表示されていませんが価格レベルも表示されています。
作成を選択します。

作成したLog Analyticsワークスペースが表示されます。

テンプレートのエクスポート機能を利用して、作成したLog AnalyticsワークスペースのARMテンプレートを確認できます。

Log AnalyticsワークスペースのARMテンプレートを作成

サンプルや作成したLog AnalyticsワークスペースのARMテンプレートのエクスポート内容を元に作成します。

Azure Monitor の Log Analytics ワークスペース用の Resource Manager テンプレートのサンプル

公式サイトのサンプルから以下の点を修正しています。

    • descriptionを削除
    • defaultValue、allowedValuesは環境に合わせて修正
    • retentionInDays、heartbeatTableRetentionを30日に修正
ARMテンプレートの例

{

  “$schema": “https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  “contentVersion": “1.0.0.0",
  “parameters": {
    “workspaceName": {
      “type": “string"
    },
    “location": {
      “type": “string",
      “defaultValue": “japaneast"
    },
    “sku": {
      “type": “string",
      “defaultValue": “PerGB2018",
      “allowedValues": [
        “PerGB2018"
      ]
    },
    “retentionInDays": {
      “type": “int",
      “defaultValue": 30
     },
    “resourcePermissions": {
      “type": “bool",
      “defaultValue": true
    },
    “heartbeatTableRetention": {
      “type": “int",
      “defaultValue": 30
    }
  },
  “resources": [
    {
      “type": “Microsoft.OperationalInsights/workspaces",
      “apiVersion": “2021-12-01-preview",
      “name": “[parameters('workspaceName’)]",
      “location": “[parameters('location’)]",
      “properties": {
        “sku": {
          “name": “[parameters('sku’)]"
        },
        “retentionInDays": “[parameters('retentionInDays’)]",
        “features": {
          “enableLogAccessUsingOnlyResourcePermissions": “[parameters('resourcePermissions’)]"
        }
      }
    },
    {
      “type": “Microsoft.OperationalInsights/workspaces/tables",
      “apiVersion": “2021-12-01-preview",
      “name": “[format('{0}/{1}’, parameters('workspaceName’), 'Heartbeat’)]",
      “properties": {
        “retentionInDays": “[parameters('heartbeatTableRetention’)]"
      },
      “dependsOn": [
        “[resourceId('Microsoft.OperationalInsights/workspaces’, parameters('workspaceName’))]"
      ]
    }
  ]
}

テンプレートスペックのリソース作成してARMテンプレートを保管

Log AnalyticsワークスペースのARMテンプレート用テンプレートスペックを作成します。
今回はPowerShellを利用して作成しています。

クイックスタート: テンプレート スペックの作成とデプロイ

テンプレートスペックの作成にはNew-AzTemplateSpecコマンドレットを使用します。

New-AzTemplateSpec

※サービス名表記がAzure Portal(日本語)上では、テンプレートスペックと表示される場合とテンプレートの仕様と表示される場合があります。
※"-TemplateFile"パラメータでARMテンプレートのファイル場所を指定しています。

テンプレートスペックを作成
New-AzTemplateSpec `
  -Name “LogAnalyticsSpec" `
  -Version “1.0" `
  -ResourceGroupName “rg-01" `
  -Location “japaneast" `
  -TemplateFile “c:\LogAnalytics.json"

Azure Portal上でも、作成したテンプレートを確認できます。

作成するリソース設定値のCSVファイル

Log Analyticsワークスペースのリソース設定値を記載したCSVファイルを作成します。
今回は、log-02とlog-03の2つのリソースを作成します。

CSVファイル
workspaceName,location,sku
log-02,japaneast,PerGB2018
log-03,japanwest,PerGB2018

PowerShellとテンプレートスペック使ってLog Analyticsワークスペースのリソースを作成

作成したテンプレートスペックを利用して、Log Analyticsワークスペースのリソースを作成します。
テンプレートスペックのID取得にはGet-AzTemplateSpecを使用します。

Get-AzTemplateSpec

ARMテンプレートを利用したリソース作成にはNew-AzResourceGroupDeploymentを使用します。
テンプレートスペックのIDは、-TemplateSpecIdパラメータで指定します。

New-AzResourceGroupDeployment

設定内容はImport-Csvを使用して、CSVファイルから読み込んでいます。

Import-Csv

※テンプレートスペックのIDにはバージョン情報も含まれています。

PowerShellの例
#Log Analyticsワークスペース設定値(テンプレートの仕様を利用)
$RgName = “rg-01" #デプロイ先のリソースグループ名
$TemplateSpeName = “LogAnalyticsSpec" #テンプレートの仕様名
$TemplateSpecVersion = “1.0" #テンプレートのバージョン
$ImportCSVPath = “c:\LogAnalytics.csv"  #CSVのファイルのパス

#テンプレートの仕様のリソースIDを取得
$TemplateSpec = Get-AzTemplateSpec  `
-Name $TemplateSpeName `
-Version $TemplateSpecVersion `
-ResourceGroupName $RgName

$TemplateSpecId = $TemplateSpec.Versions.Id

#CSVファイルからLog Analyticsワークスペースの設定値を取得
$csv = Import-Csv -path $ImportCSVPath

#Log Analyticsワークスペースのリソースを作成
foreach( $c in $csv ){

New-AzResourceGroupDeployment -ResourceGroupName $RgName `
  -TemplateSpecId $TemplateSpecId `
  -workspaceName $c.workspaceName `
  -location $c.location `
  -sku $c.sku
}

PowerShellの実行結果

PowerShellの実行結果です。
2つのLog Analyticsワークスペースが作成されていることが確認できます。

PowerShellの実行結果

DeploymentName : xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
ResourceGroupName : rg-01
ProvisioningState : Succeeded
Timestamp : 2024/03/03 9:05:46
Mode : Incremental
TemplateLink :
Uri :
ContentVersion : 1.0.0.0

Parameters :
Name Type Value
=========================
workspaceName String “log-02"
location String “japaneast"
sku String “PerGB2018"
retentionInDays Int 30
resourcePermissions Bool true
heartbeatTableRetention Int 30

Outputs :
DeploymentDebugLogLevel :

~中略~

=========================
workspaceName String “log-03"
location String “japanwest"
sku String “PerGB2018"
retentionInDays Int 30
resourcePermissions Bool true
heartbeatTableRetention Int 30

作成されたリソースを確認します。
CSVファイルで指定した設定値でリソースが作成されていることを確認できます。

—広告—

最後に

今回はLog Analyticsワークスペースを例に、ARMテンプレートやテンプレートスペックを利用してリソース作成の手順を確認しました。
ARMテンプレートのサンプルは公開されており、実際のリソースを参照しながら内容を確認できるため便利だと思いました。

引き続き、いろいろ試してみたいと思います。

カスタムテンプレートのデプロイを利用した場合の手順については、こちらで紹介しています。

Log Analyticsワークスペースの削除や回復についてはこちらに纏めています。
併せて見て頂けると有難いです。

スポンサーリンク