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

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

ARMテンプレート(Azure Resource Manager テンプレート)からリソースデプロイする手順です。
テンプレートスペックを利用しAzurePowerShellでリソースを作成してます。
Log Analyticsワークスペースの作成を例に手順確認しています。

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

スポンサーリンク

ARMテンプレートを利用してLog Analytics ワークスペースを作成

手順概要

最初に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)(共通)

Azure PortalでLog Analyticsワークスペースを作成

Azure PortalでLog Analyticsワークスペースをデプロイします。

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

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

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

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

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

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

作成を選択します。

作成完了するとLog Analyticsワークスペースが表示されています。

テンプレートのエクスポートで作成したLog AnalyticsワークスペースのARMテンプレートが確認出来ます。

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

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

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

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

    • descriptionは削除しています
    • defaultValue、allowedValuesは環境に合わせて少し修正しています
    • retentionInDays、heartbeatTableRetentionはAzure Portalでデプロイ時の値に合わせて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’))]"
      ]
    }
  ]
}

テンプレートスペックを作成

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

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

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

Get-AzTemplateSpec

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

Log Analyticsワークスペースを削除
New-AzTemplateSpec `
  -Name “LogAnalyticsSpec" `
  -Version “1.0" `
  -ResourceGroupName “rg-01" `
  -Location “japaneast" `
  -TemplateFile “c:\LogAnalytics.json"

Azure Portal上でも作成したテンプレートが確認出来ます。

設定値のCSVファイル

Log Analyticsワークスペースのリソース設定値となるCSVファイルを作成します。
log-01、02の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を使用します。
ARMテンプレートのパスにテンプレートスペックのIDを指定します。

New-AzResourceGroupDeployment

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

Import-Csv

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

 
#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
}

実行結果

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

実行結果

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

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

—広告—

最後に

今回はARMテンプレートを利用してLog Analyticsワークスペースを作成しました。
ARMテンプレート自体のサンプルは公開されている実際のリソースを見ながら確認する事も出来るので便利かと思いました。

今後も色々試してみたいと思います。

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

スポンサーリンク