教學課程:將變數新增至 ARM 範本

在本教學課程中,您將了解如何將變數新增至 Azure Resource Manager 範本 (ARM 範本)。 變數可以簡化範本。 變數可讓您撰寫運算式一次,並且在整個範本中重複使用。 完成此教學課程需要 7 分鐘

必要條件

我們建議您完成有關函式的教學課程,但並非必要。

您必須安裝 Visual Studio Code 並且與 Azure Resource Manager 工具延伸模組搭配使用,以及 Azure PowerShell 或 Azure CLI。 如需詳細資訊,請參閱範本工具

檢閱範本

在上一個教學課程結束時,您的範本會具有下列 JSON 檔案:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "storageName": {
      "type": "string",
      "minLength": 3,
      "maxLength": 24
    },
    "storageSKU": {
      "type": "string",
      "defaultValue": "Standard_LRS",
      "allowedValues": [
        "Standard_LRS",
        "Standard_GRS",
        "Standard_RAGRS",
        "Standard_ZRS",
        "Premium_LRS",
        "Premium_ZRS",
        "Standard_GZRS",
        "Standard_RAGZRS"
      ]
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]"
    }
  },
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2021-09-01",
      "name": "[parameters('storageName')]",
      "location": "[parameters('location')]",
      "sku": {
        "name": "[parameters('storageSKU')]"
      },
      "kind": "StorageV2",
      "properties": {
        "supportsHttpsTrafficOnly": true
      }
    }
  ]
}

您的 Azure 儲存體帳戶名稱必須是唯一的,才能輕鬆地繼續建置 ARM 範本。 如果您已完成本系列中先前的教學課程,則可能已經厭倦又是唯一的名稱。 您可以藉由新增可為儲存體帳戶建立唯一名稱的變數來解決此問題。

使用變數

下列範例會反白顯示將變數新增至範本,以建立唯一儲存體帳戶名稱的變更。 複製整個檔案,並以其內容取代您的範本。

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "storagePrefix": {
      "type": "string",
      "minLength": 3,
      "maxLength": 11
    },
    "storageSKU": {
      "type": "string",
      "defaultValue": "Standard_LRS",
      "allowedValues": [
        "Standard_LRS",
        "Standard_GRS",
        "Standard_RAGRS",
        "Standard_ZRS",
        "Premium_LRS",
        "Premium_ZRS",
        "Standard_GZRS",
        "Standard_RAGZRS"
      ]
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]"
    }
  },
  "variables": {
    "uniqueStorageName": "[concat(parameters('storagePrefix'), uniqueString(resourceGroup().id))]"
  },
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2021-09-01",
      "name": "[variables('uniqueStorageName')]",
      "location": "[parameters('location')]",
      "sku": {
        "name": "[parameters('storageSKU')]"
      },
      "kind": "StorageV2",
      "properties": {
        "supportsHttpsTrafficOnly": true
      }
    }
  ]
}

請注意,它包含名為 uniqueStorageName 的變數。 此變數會使用四個函式來建立字串值。

您已經熟悉 parameters 函式,因此我們將不會進行檢查。

您也很熟悉 resourceGroup 函式。 在此情況下,您會取得 id 的屬性,而不是 location 屬性,如先前的教學課程所示。 id 屬性會傳回資源群組的完整識別碼,包括訂用帳戶識別碼和資源群組名稱。

uniqueString 函式會建立 13 個字元的雜湊值。 您傳遞的參數會決定傳回的值。 在此教學課程中,您會使用資源群組識別碼作為雜湊值的輸入。 這表示您可以將此範本部署到不同的資源群組,並取得不同的唯一字串值。 不過,如果您部署至相同的資源群組,則會取得相同的值。

concat 函式會取得值,並將它們合併。 針對此變數,會取得來自參數的字串和來自 uniqueString 函式的字串,並將其合併成一個字串。

storagePrefix 參數可讓您傳入前置詞,以協助您識別儲存體帳戶。 您可以建立自己的命名慣例,以便在部署之後,更輕鬆地從一長串資源中識別儲存體帳戶。

最後,請注意,儲存體帳戶名稱現在會設定為變數,而不是參數。

部署範本

讓我們來部署範本。 部署此範本會比先前的範本更容易,因為您只需提供儲存體帳戶名稱的前置詞。

如果您尚未建立資源群組,請參閱建立資源群組。 此範例會假設您已將 templateFile 變數設為範本檔案的路徑,如第一個教學課程中所示。

New-AzResourceGroupDeployment `
  -Name addnamevariable `
  -ResourceGroupName myResourceGroup `
  -TemplateFile $templateFile `
  -storagePrefix "store" `
  -storageSKU Standard_LRS

注意

如果部署失敗,請使用 verbose 參數來取得所建立資源的相關資訊。 使用 debug 參數來取得更多資訊以進行偵錯。

驗證部署

您可以從 Azure 入口網站探索資源群組,藉以確認部署。

  1. 登入 Azure 入口網站
  2. 從左側功能表中,選取 [資源群組]
  3. 選取您的資源群組。
  4. 請注意,您部署的儲存體帳戶名稱是存放區,加上隨機字元的字串。

清除資源

如果您要繼續進行下一個教學課程,則不需要刪除資源群組。

如果您現在要停止,則可能想要刪除資源群組。

  1. 在 Azure 入口網站中,選取左側功能表中的 [資源群組]
  2. 在 [篩選任何欄位...] 文字欄位中輸入資源群組名稱。
  3. 核取 myResourceGroup 旁的方塊,然後選取 myResourceGroup 或資源群組名稱。
  4. 從頂端功能表中選取 [刪除資源群組]

下一步

在此教學課程中,您新增可建立儲存體帳戶唯一名稱的變數。 在下一個教學課程中,您會從部署的儲存體帳戶傳回值。