Упражнение. Использование элемента copy для сокращения числа повторяемых элементов
В этом заключительном упражнении вы продолжите работать с учетными записями хранения. На этот раз вы используете конструкцию copy
для инициализации нескольких учетных записей хранения из одного определения.
Конструкция Copy
является единым объектом, который необходимо обновить при изменении требований.
Создание шаблона ARM
Здесь вы создаете шаблон Azure Resource Manager (ARM), который определяет ресурс учетной записи хранения. Шаблон использует конструкцию copy
для создания аналогичных версий одного и того же ресурса заданное число раз.
В Visual Studio Code создайте файл с именем copy.json в том же каталоге, который содержит azuredeploy.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 создайте файл с именем copy.json в том же каталоге, который содержит azuredeploy.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") — это вторая учетная запись хранения.
Отлично! По мере изменения ваших потребностей, например необходимого уровня производительности, можно изменить определения ресурсов из одного расположения.
Очистка
Когда вы завершите работу с этим модулем, песочница автоматически очистит ваши ресурсы.
Если вы работаете в собственной подписке, в конце проекта следует решить, нужны ли вам созданные ресурсы. Оставленные работающими ресурсы могут создавать затраты. Вы можете удалить ресурсы по отдельности либо удалить всю группу ресурсов.