練習 - 使用 copy 減少重複
在這個最後的練習中,您將繼續使用儲存體帳戶。 這次,您使用 copy
建構來從單一定義佈建多個儲存體帳戶。
當您的需求變更時,Copy
會為您提供需要更新的單一中央位置。
建立 ARM 範本
在這裡,您建立 Azure Resource Manager (ARM) 範本來定義儲存體帳戶資源。 範本會使用 copy
在指定的次數內建立相同資源的類似版本。
在 Visual Studio Code 中,於包含 azuredeploy.json 的相同目錄中,建立名為copy.json 的檔案。
將這些內容新增到 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
參數讀取要製作的複本數目。
部署範本
在這裡,您會依照先前的方式來部署範本。 部署步驟會佈建兩個類似的儲存體帳戶。
建立 PowerShell 變數來保存儲存體帳戶名稱。
$STORAGE_ACCT_NAME="tailwindsa" + (Get-Random -Count 1)
執行下列
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
在指定的次數內建立相同資源的類似版本。
在 Visual Studio Code 中,於包含 azuredeploy.json 的相同目錄中,建立名為copy.json 的檔案。
將這些內容新增到 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
參數讀取要製作的複本數目。
部署範本
在這裡,您會依照先前的方式來部署範本。 部署步驟會佈建兩個類似的儲存體帳戶。
建立 Bash 變數來保存儲存體帳戶名稱。
STORAGE_ACCT_NAME=tailwindsa$RANDOM
執行下列
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/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/<rgn>resource group name</rgn>/providers/Microsoft.Storage/storageAccounts/tailwindsa9820
/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/<rgn>resource group name</rgn>/providers/Microsoft.Storage/storageAccounts/tailwindsa9821
在此範例中:
- tailwindsa982 是針對儲存體帳戶 (
tailwindsa$RANDOM
) 所產生的基底名稱。 - tailwindsa9820 (基底名稱加上 "0") 是第一個儲存體帳戶。
- tailwindsa9821 (基底名稱加上 "1") 是第二個儲存體帳戶。
很棒! 隨著您的需求變更 (例如,您所需的效能層級),您可以從單一位置修改資源定義。
清理
當您完成此課程模組時,沙箱會自動清除您的資源。
如果您是在自己的訂用帳戶中進行,建議您在專案結束時判斷自己是否仍需要先前所建立的資源。 若您繼續執行資源,則可能會產生費用。 您可以個別刪除資源,或刪除資源群組以刪除整組資源。