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