2020-03-28 2024-03-05  ARM 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ワークスペースの削除や回復についてはこちらに纏めています。 
併せて見て頂けると有難いです。