使用 Azure Resource Manager 樣本標籤和參數檔案維護多個 Azure 部署

已完成

當您部署至多個 Azure 環境時,您想要使用的 Azure Resource Manager 範本有兩個功能。 這些功能是 資源標記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