透過使用 Azure Resource Manager 範本標籤和參數檔案來維護多個 Azure 部署
部署至多個 Azure 環境時,您會想要使用 Azure Resource Manager (ARM) 範本的兩個功能。 這些功能是「資源標籤」與「ARM 範本參數檔案」。
當您在環境中新增更多資源時,您很快就會發現需要一種方式來識別這些資源的用途。 資源具有此用途的 tags:
屬性。 當您部署到更多環境時,您需要有效的方式來追蹤輸入參數。 ARM 範本可以使用參數檔案來管理每個部署環境的參數。
什麼是 Azure 資源標籤?
您可以標記資源,從而新增可協助您識別其用途的值。 例如,您可以新增標籤,進而列出資源所屬的環境和專案。 或者,您可以新增標籤來識別成本中心或擁有該資源的小組。 新增對您的組織有意義的任何值。
標籤值會顯示在該 Azure 資源和成本報告的 [概觀] 頁面中。
如何建立 Azure 資源標籤?
每個資源都有一個 tags:
屬性。 到目前為止,您已為儲存體帳戶的標籤使用預設 displayName
:
"tags": {
"displayName": "[parameters('storageName')]"
},
若要讓這個屬性更有用,您可以定義具有詳細資訊的參數,然後在 tags:
屬性中使用該參數。 例如,您可以建立參數來保存名為 resourceTags
的物件:
"resourceTags": {
"type": "object",
"defaultValue": {
"Environment": "Dev",
"Project": "Inventory"
}
}
在這裡,您已建立一個物件來保存環境名稱和專案名稱的值,但您可以定義您想要的任何值。
然後,您可以針對開發環境和庫存專案的任何資源使用該參數;例如,您的儲存體帳戶。
"resources": [{
"name": "[variables('uniqueStorageName')]",
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2019-06-01",
"tags": "[parameters('resourceTags')]",
...
}],
什麼是 ARM 範本參數檔案?
ARM 範本參數檔案包含的值,會在範本執行時傳入到 ARM 範本。 透過針對要部署 ARM 範本的每個環境使用參數檔案,即可確保針對該特定環境設定正確的參數。 您也可以確保在原始檔控制中,追蹤那些參數值的歷程記錄和維護。
如何使用 ARM 範本參數檔案?
ARM 範本參數檔案是保存參數值的 JSON 檔案。 例如,針對您到目前為止在 ARM 範本中使用的參數,您可以建立範本參數檔案,如下所示:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"storagePrefix": {
"value": "storage"
},
"storageSKU": {
"value": "Standard_LRS"
},
"resourceTags": {
"value": {
"Environment": "Dev",
"Project": "Learn"
}
}
}
}
然後,您可以為每個環境建立相似的檔案。 例如,這些檔案可能被稱為 azuredeploy.parameters.dev.json 和 azuredeploy.parameters.prod.json,並具有不同的參數值。
若要藉由使用參數檔案來部署 ARM 範本,請在部署命令中指定參數檔案的路徑。 在 Azure CLI 中,您會使用 --parameters {path to parameter file}
。 在 PowerShell 中,您會使用 -TemplateParameterFile {path to parameter file}
。
templateFile="{path-to-the-template-file}"
devParameterFile="{path-to-azuredeploy.parameters.dev.json}"
az group create \
--name myResourceGroupDev \
--location "East US"
az deployment group create \
--name devenvironment \
--resource-group myResourceGroupDev \
--template-file $templateFile \
--parameters $devParameterFile