練習 - 使用 copy 減少重複

已完成

在這個最後的練習中,您將繼續使用儲存體帳戶。 這次,您使用 copy 建構來從單一定義佈建多個儲存體帳戶。

當您的需求變更時,Copy 會為您提供需要更新的單一中央位置。

建立 ARM 範本

在這裡,您建立 Azure Resource Manager (ARM) 範本來定義儲存體帳戶資源。 範本會使用 copy 在指定的次數內建立相同資源的類似版本。

  1. 在 Visual Studio Code 中,於包含 azuredeploy.json 的相同目錄中,建立名為copy.json 的檔案。

  2. 將這些內容新增到 copy.json

    {
      "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
      "contentVersion": "1.0.0.0",
      "parameters": {
        "storageCount": {
          "type": "int",
          "defaultValue": 1,
          "metadata": {
            "description": "the number of storage accounts copies being deployed"
          }
        },
        "storageAccountName": {
          "type": "string",
          "defaultValue": "storage",
          "metadata": {
            "description": "the name of the storage account"
          }
        }
      },
      "functions": [],
      "variables": {},
      "resources": [
        {
          "name": "[concat(parameters('storageAccountName'), copyIndex())]",
          "type": "Microsoft.Storage/storageAccounts",
          "apiVersion": "2019-06-01",
          "tags": {
            "displayName": "storageaccount1"
          },
          "location": "[resourceGroup().location]",
          "kind": "StorageV2",
          "sku": {
            "name": "Premium_LRS",
            "tier": "Premium"
          },
          "copy": {
            "name": "storagecopy",
            "count": "[parameters('storageCount')]"
          }
        }
      ],
      "outputs": {}
    }
    

storageCount 參數會定義要建立的複本數目。

resources 底下,記下儲存體帳戶資源。 為了讓儲存體帳戶名稱成為唯一,範本使用 copyIndex(),以將目前的索引附加至儲存體帳戶名稱。

copy 區段會從 storageCount 參數讀取要製作的複本數目。

部署範本

在這裡,您會依照先前的方式來部署範本。 部署步驟會佈建兩個類似的儲存體帳戶。

  1. 建立 PowerShell 變數來保存儲存體帳戶名稱。

    $STORAGE_ACCT_NAME="tailwindsa" + (Get-Random -Count 1)
    
  2. 執行下列 New-AzResourceGroupDeployment 命令以部署範本:

    New-AzResourceGroupDeployment `
    -TemplateFile "./copy.json" `
    -storageAccountName $STORAGE_ACCT_NAME `
    -storageCount 2
    

    在這裡,您將 storageCount 設定為 2,以佈建兩個儲存體帳戶。

檢查部署

儘管輸出顯示那兩個儲存體帳戶已建立,但您還是可以在這裡執行 Get-AzResource 命令,以將焦點放在輸出資源上。

執行下列 Get-AzResource 命令,以確定已部署資源:

Get-AzResource -Name tailwindsa* -ResourceGroupName <rgn>resource group name</rgn> | Select-Object -Property Name,ResourceId

tailwindsa* 引數指定只顯示符合您為資源提供之名稱前置詞的識別碼。

您的輸出看起來會像這樣:

Name                 ResourceId
----                 ----------
tailwindsa1852777810 /subscriptions/11112222-3333-4444-5555-1111222233334444/resourceGroups/<rgn>resoure group</rgn>/providers/Microsoft.Storage/storageAccount…
tailwindsa1852777811 /subscriptions/11112222-3333-4444-5555-1111222233334444/resourceGroups/<rgn>resoure group</rgn>/providers/Microsoft.Storage/storageAccount…

在此範例中:

  • tailwindsa185277781 是針對儲存體帳戶 ("tailwindsa" + Get-Random -Count 1) 所產生的基底名稱。
  • tailwindsa1852777810 (基底名稱加上 "0") 是第一個儲存體帳戶。
  • tailwindsa1852777811 (基底名稱加上 "1") 是第二個儲存體帳戶。

很棒! 隨著您的需求變更 (例如,您所需的效能層級),您可以從單一位置修改資源定義。

清理

當您完成此課程模組時,沙箱會自動清除您的資源。

如果您是在自己的訂用帳戶中進行,建議您在專案結束時判斷自己是否仍需要先前所建立的資源。 若您繼續執行資源,則可能會產生費用。 您可以個別刪除資源,或刪除資源群組以刪除整組資源。

建立 ARM 範本

在這裡,您建立 Azure Resource Manager (ARM) 範本來定義儲存體帳戶資源。 範本會使用 copy 在指定的次數內建立相同資源的類似版本。

  1. 在 Visual Studio Code 中,於包含 azuredeploy.json 的相同目錄中,建立名為copy.json 的檔案。

  2. 將這些內容新增到 copy.json

    {
      "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
      "contentVersion": "1.0.0.0",
      "parameters": {
        "storageCount": {
          "type": "int",
          "defaultValue": 1,
          "metadata": {
            "description": "the number of storage accounts being deployed"
          }
        },
        "storageAccountName": {
          "type": "string",
          "defaultValue": "storage",
          "metadata": {
            "description": "the name of the storage account"
          }
        }
      },
      "functions": [],
      "variables": {},
      "resources": [
        {
          "name": "[concat(parameters('storageAccountName'), copyIndex())]",
          "type": "Microsoft.Storage/storageAccounts",
          "apiVersion": "2019-06-01",
          "tags": {
            "displayName": "storageaccount1"
          },
          "location": "[resourceGroup().location]",
          "kind": "StorageV2",
          "sku": {
            "name": "Premium_LRS",
            "tier": "Premium"
          },
          "copy": {
            "name": "storagecopy",
            "count": "[parameters('storageCount')]"
          }
        }
      ],
      "outputs": {}
    }
    

storageCount 參數會定義要建立的複本數目。

resources 底下,記下儲存體帳戶資源。 為了讓儲存體帳戶名稱成為唯一,範本使用 copyIndex(),以將目前的索引附加至儲存體帳戶名稱。

copy 區段會從 storageCount 參數讀取要製作的複本數目。

部署範本

在這裡,您會依照先前的方式來部署範本。 部署步驟會佈建兩個類似的儲存體帳戶。

  1. 建立 Bash 變數來保存儲存體帳戶名稱。

    STORAGE_ACCT_NAME=tailwindsa$RANDOM
    
  2. 執行下列 az deployment group create 命令以部署範本:

    az deployment group create \
      --template-file copy.json \
      --parameters storageAccountName=$STORAGE_ACCT_NAME storageCount=2
    

    在這裡,您將 storageCount 設定為 2,以佈建兩個儲存體帳戶。

檢查部署

儘管輸出顯示那兩個儲存體帳戶已建立,但您還是可以在這裡執行 az deployment group show 命令,以將焦點放在輸出資源上。

執行下列 az deployment group show 命令,以顯示部署相關的詳細資料:

az deployment group show \
  --name copy \
  --query "properties.outputResources[].id" \
  --output tsv

--query 引數指定只顯示來自輸出資源的識別碼。

您的輸出看起來會像這樣:

/subscriptions/4b328dc1-56b1-4031-89b0-c0898204f8a5/resourceGroups/<rgn>resource group name</rgn>/providers/Microsoft.Storage/storageAccounts/tailwindsa9820
/subscriptions/4b328dc1-56b1-4031-89b0-c0898204f8a5/resourceGroups/<rgn>resource group name</rgn>/providers/Microsoft.Storage/storageAccounts/tailwindsa9821

在此範例中:

  • tailwindsa982 是針對儲存體帳戶 (tailwindsa$RANDOM) 所產生的基底名稱。
  • tailwindsa9820 (基底名稱加上 "0") 是第一個儲存體帳戶。
  • tailwindsa9821 (基底名稱加上 "1") 是第二個儲存體帳戶。

很棒! 隨著您的需求變更 (例如,您所需的效能層級),您可以從單一位置修改資源定義。

清理

當您完成此課程模組時,沙箱會自動清除您的資源。

如果您是在自己的訂用帳戶中進行,建議您在專案結束時判斷自己是否仍需要先前所建立的資源。 若您繼續執行資源,則可能會產生費用。 您可以個別刪除資源,或刪除資源群組以刪除整組資源。