[Azure]ARM テンプレートはリソースの更新もできる

完全に勘違いしていました

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のリソースの作成だけでなく、更新もできます。

コメントを残す