練習 - 使用 Azure Resource Manager 變數來儲存運算式

已完成

在此練習中,您會將 Azure 儲存體帳戶名稱運算式儲存在 Azure Resource Manager (ARM) 範本變數中。 那麼,您可以使用該變數,指定要建立的儲存體帳戶名稱。

在本練習中,我們會使用適用於 Visual Studio Code 的 Azure Resource Manager 工具。 請務必在 Visual Studio Code 中安裝此延伸模組。

新增變數

新增變數,以將您的儲存體帳戶名稱運算式儲存在範本中的一個位置。

  1. 在 Visual Studio Code 的 azuredeploy.json 檔案中,將您的游標放在變數區塊 "variables":{} 中的大括弧之間,然後按 Enter

  2. 在大括弧內輸入 var。 您會看到相關程式碼片段的清單。 選取 arm-variable

    Screenshot of Visual Studio Code that shows the snippets for Azure Resource Manager template variables.

  3. 您的變數區段看起來像下列程式代碼:

    "variables": {"variable1": "value"},
    
  4. 將變數的名稱變更為 uniqueStorageName,並將值變更為 "[toLower(concat(parameters('storagePrefix'),uniqueString(resourceGroup().id)))]"。 您的變數區段看起來像下列程式代碼:

    "variables": {
        "uniqueStorageName": "[toLower(concat(parameters('storagePrefix'),uniqueString(resourceGroup().id)))]"
      },
    

    請注意,您在運算式中使用 storagePrefix 參數,而不是常值字串。 否則,此運算式會與您在上一個單元中所學到的運算式相同。

  5. 使用 resources 區段中的變數。 將 name:displayName 屬性的值變更為 "[variables('uniqueStorageName')]"

  6. 整個檔案看起來像這個範例:

    {
        "$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"
                ]
            }
       },
        "functions": [],
        "variables": {
        "uniqueStorageName": "[toLower(concat(parameters('storagePrefix'),uniqueString(resourceGroup().id)))]"
      },
        "resources": [{
            "name": "[variables('uniqueStorageName')]",
            "type": "Microsoft.Storage/storageAccounts",
            "apiVersion": "2019-06-01",
            "tags": {
                "displayName": "[variables('uniqueStorageName')]"
            },
            "location": "[resourceGroup().location]",
            "kind": "StorageV2",
            "sku": {
             "name": "[parameters('storageSKU')]"
           }
        }],
        "outputs": {}
    }
    

選擇性部署範本

更新的範本不會對您所部署的資源進行任何變更,因此部署此範本不會對您的 Azure 環境進行任何變更。

如果您希望部署此範本以使其成功,請使用下列 Azure CLI 命令。 請務必使用您在上一個部署中所使用的相同 storagePrefix 參數值。

templateFile="azuredeploy.json"
today=$(date +"%d-%b-%Y")
DeploymentName="addVariable-"$today

az deployment group create \
  --name $DeploymentName \
  --template-file $templateFile \
  --parameters storagePrefix={your-Prefix}

但是,如果您希望部署此範本以使其成功,請使用下列 Azure PowerShell 命令。 請務必使用您在上一個部署中所使用的相同 storagePrefix 參數值。

$templateFile = "azuredeploy.json"
$today=Get-Date -Format "MM-dd-yyyy"
$deploymentName="addVariable-"+"$today"
New-AzResourceGroupDeployment `
  -Name $deploymentName `
  -TemplateFile $templateFile `
  -storagePrefix {your-Prefix}