透過使用 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