練習 - 使用 Azure Resource Manager 標籤和參數檔案

已完成

在此練習中,您會新增標籤來協助組織及追蹤您的 Microsoft Azure 資源。 您也可以使用 Azure Resource Manager (ARM) 範本參數檔案,對每個部署進行不同的參數設定。

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

建立標籤以追蹤資源部署環境和專案

首先,您會建立一個參數,作為範本中的資源標籤使用。

  1. 在 Visual Studio Code 的 azuredeploy.json 檔案中,將您的游標放在 storageSKU 參數的右大括弧後面。 加入逗號,然後按 Enter 鍵。

  2. 輸入 par。 您會看到相關程式碼片段的清單。

  3. 選取 [arm-param]。 請記住,此動作會將泛型參數新增至範本。 它會看起來像此程式碼:

    "parameter1": {
        "type": "string",
        "metadata": {
            "description": "description"
        }
    
  4. parameter1 變更為 resourceTags,並將 "type": 的值變更為 object。 請記住,參數可以是 string、secureString、int、bool、object、secureObject 及 array 資料類型。 本課程模組的摘要中有這些參數類型的範例語法連結。

  5. 新增名為 defaultValue: 的屬性,並將值設定為 {"Environment": "Dev", "Project": "Tutorial"}

    參數區塊看起來應該像下列程式碼:

    "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"
            ]
        },
        "resourceTags": {
        "type": "object",
        "defaultValue": {
            "Environment": "Dev",
            "Project": "Tutorial"
            }
        }
    },
    
  6. 使用此參數來標記您的儲存體帳戶資源。 在資源定義中變更 tags: 屬性:

    "tags": "[parameters('resourceTags')]",
    
  7. 您的檔案看起來應該像下列檔案:

    {
        "$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"
                ]
            },
            "resourceTags": {
            "type": "object",
            "defaultValue": {
                "Environment": "Dev",
                "Project": "Tutorial"
            }
        }
       },
        "functions": [],
        "variables": {
        "uniqueStorageName": "[toLower(concat(parameters('storagePrefix'),uniqueString(resourceGroup().id)))]"
      },
        "resources": [{
            "name": "[variables('uniqueStorageName')]",
            "type": "Microsoft.Storage/storageAccounts",
            "apiVersion": "2019-06-01",
            "tags": "[parameters('resourceTags')]",
            "location": "[resourceGroup().location]",
            "kind": "StorageV2",
            "sku": {
             "name": "[parameters('storageSKU')]"
           }
        }],
        "outputs": {}
    }
    
  8. 儲存檔案。

使用已更新的標籤部署 ARM 範本

  • 將已更新的 ARM 範本部署至 Azure。 請務必使用您之前使用的相同 storagePrefix

    templateFile="azuredeploy.json"
    today=$(date +"%d-%b-%Y")
    DeploymentName="updateTags-"$today
    
    az deployment group create \
        --name $DeploymentName \
        --template-file $templateFile \
        --parameters storagePrefix={your-Prefix} storageSKU=Standard_LRS
    
  • 將已更新的 ARM 範本部署至 Azure。 請務必使用您之前使用的相同 storagePrefix

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

確認新的標籤位於部署中

  1. 在 Azure 中,選取 [沙箱資源群組名稱] 資源群組,然後選取您部署的儲存體帳戶。

  2. 請注意 環境:開發專案:教學課程標籤:

    Screenshot of the Azure portal that shows the selected tags in the Storage account Overview page.

使用參數檔案

目前,每次部署此範本時都要填入三個參數。 範本的每個使用者都可以建立檔案來保存參數值。 在這裡,您建立參數檔案以搭配範本一起使用。

  1. 在 Visual Studio Code 中建立另一個檔案。 命名為 azuredeploy.parameters.dev.json

  2. 在此檔案中,您新增值給您想在開發環境中輸入到範本的範本參數。 變更標記值就可看到部署做出變更。 例如,您可以將 projectName 變更為 Learn

    {
      "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
      "contentVersion": "1.0.0.0",
      "parameters": {
        "storagePrefix": {
          "value": "{unique-prefix}"
        },
        "storageSKU": {
          "value": "Standard_LRS"
        },
        "resourceTags": {
          "value": {
            "Environment": "Dev",
            "Project": "Learn"
          }
        }
      }
    }
    
  3. 請務必將 {unique-prefix} 換成您的唯一前置詞。

  4. 儲存檔案。

使用參數檔案部署範本

在本節中,您將部署 ARM 範本,並指定要使用的參數檔案。

  1. 在 Visual Studio Code 終端機,執行下列 Azure CLI 命令:

    templateFile="azuredeploy.json"
    devParameterFile="azuredeploy.parameters.dev.json"
    today=$(date +"%d-%b-%Y")
    DeploymentName="addParameterFile-"$today
    
    az deployment group create \
      --name $DeploymentName \
      --template-file $templateFile \
      --parameters $devParameterFile
    
  2. 檢查 Azure 以確保部署是否成功,以及標籤值是否已變更:

    Screenshot of the Azure portal that shows the updated tag values in the Storage account Overview page.

  3. 挑戰看看,為生產環境建立參數檔。 執行命令時變更參數檔案路徑,以部署至實際執行環境。

  1. 在 Visual Studio Code 終端機,執行下列 Azure PowerShell 命令:

    $templateFile = "azuredeploy.json"
    $parameterFile="azuredeploy.parameters.dev.json"
    $today=Get-Date -Format "MM-dd-yyyy"
    $deploymentName="addParameterFile-"+"$today"
    New-AzResourceGroupDeployment `
      -Name $deploymentName `
      -TemplateFile $templateFile `
      -TemplateParameterFile $parameterFile
    
  2. 檢查 Azure 以確保部署是否成功,以及標籤值是否已變更:

    Screenshot of the Azure portal that shows the updated tag values in the Storage account Overview page.

  3. 挑戰看看,為生產環境建立參數檔。 執行命令時變更參數檔案路徑,以部署至實際執行環境。