完全に勘違いしていました
ARM Templateはリソースの作成をするものであってリソースの更新はできなくて、それをやりたい場合はAzure Blueprintを使う必要がある…。なぜかそんな勘違いをしていました。
ARM Templateはリソースの更新はできます。
実際にリソース更新をやってみる
試しに、ARM Templateでストレージアカウントを作成して、それをARM Templateで更新するっていうのをやってみます。
ストレージアカウントを作成する
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"storageAccount": {
"type": "string"
}
},
"variables": {},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2022-05-01",
"name": "[parameters('storageAccount')]",
"location": "[resourceGroup().location]",
"sku": {
"name": "Standard_LRS",
"tier": "Standard"
},
"kind": "StorageV2",
"properties": {
"dnsEndpointType": "Standard",
"defaultToOAuthAuthentication": true,
"publicNetworkAccess": "Enabled",
"allowCrossTenantReplication": false,
"isSftpEnabled": false,
"minimumTlsVersion": "TLS1_2",
"allowBlobPublicAccess": false,
"allowSharedKeyAccess": false,
"isHnsEnabled": true,
"networkAcls": {
"bypass": "AzureServices",
"virtualNetworkRules": [],
"ipRules": [],
"defaultAction": "Allow"
},
"supportsHttpsTrafficOnly": true,
"encryption": {
"requireInfrastructureEncryption": false,
"services": {
"file": {
"keyType": "Account",
"enabled": true
},
"blob": {
"keyType": "Account",
"enabled": true
}
},
"keySource": "Microsoft.Storage"
},
"accessTier": "Hot"
}
}
]
}
作成されたストレージアカウントはこんな感じ。
ARM Templateを更新してリソースを更新する
さきほどデプロイしたARM Templateのパラメータを変更して再デプロイしてみます。今回は、allowBlobPublicAccess、allowSharedKeyAccess、accessTier の値を変更しています。
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"storageAccount": {
"type": "string"
}
},
"variables": {},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2022-05-01",
"name": "[parameters('storageAccount')]",
"location": "[resourceGroup().location]",
"sku": {
"name": "Standard_LRS",
"tier": "Standard"
},
"kind": "StorageV2",
"properties": {
"dnsEndpointType": "Standard",
"defaultToOAuthAuthentication": true,
"publicNetworkAccess": "Enabled",
"allowCrossTenantReplication": false,
"isSftpEnabled": false,
"minimumTlsVersion": "TLS1_2",
"allowBlobPublicAccess": true,
"allowSharedKeyAccess": true,
"isHnsEnabled": true,
"networkAcls": {
"bypass": "AzureServices",
"virtualNetworkRules": [],
"ipRules": [],
"defaultAction": "Allow"
},
"supportsHttpsTrafficOnly": true,
"encryption": {
"requireInfrastructureEncryption": false,
"services": {
"file": {
"keyType": "Account",
"enabled": true
},
"blob": {
"keyType": "Account",
"enabled": true
}
},
"keySource": "Microsoft.Storage"
},
"accessTier": "Cool"
}
}
]
}
ストレージアカウントの構成を見てみると、変更が反映されていることが確認できました。
まとめ
ARM TemplateはAzureのリソースの作成だけでなく、更新もできます。