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