Exercício – Utilizar copy para reduzir a repetição
Neste exercício final, vai continuar a trabalhar com contas de armazenamento. Desta vez, vai utilizar a construção copy
para aprovisionar várias contas de armazenamento numa única definição.
A construção Copy
proporciona-lhe uma única localização central que precisa de atualizar quando os requisitos mudam.
Criar o modelo ARM
Agora, irá criar um modelo do Azure Resource Manager (ARM) que define um recurso da conta de armazenamento. O modelo utiliza copy
para criar versões semelhantes do mesmo recurso um determinado número de vezes.
No Visual Studio Code, crie um ficheiro chamado copy.json no mesmo diretório que contém azuredeploy.json.
Adicione estes conteúdos ao 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": {} }
O parâmetro storageCount
define o número de cópias a criar.
Em resources
, observe o recurso da conta de armazenamento. Para tornar o nome da conta de armazenamento exclusivo, o modelo utiliza copyIndex()
para acrescentar o índice atual ao nome da conta de armazenamento.
A secção copy
lê o número de cópias a serem feitas a partir do parâmetro storageCount
.
Implementar o modelo
Vai agora implementar o modelo como fez anteriormente. O passo de implementação aprovisiona duas contas de armazenamento semelhantes.
Crie uma variável do PowerShell com o nome da conta de armazenamento.
$STORAGE_ACCT_NAME="tailwindsa" + (Get-Random -Count 1)
Para implementar o modelo, execute o seguinte comando
New-AzResourceGroupDeployment
:New-AzResourceGroupDeployment ` -TemplateFile "./copy.json" ` -storageAccountName $STORAGE_ACCT_NAME ` -storageCount 2
Agora, vai definir
storageCount
como2
para aprovisionar duas contas de armazenamento.
Verificar a implementação
Embora a saída mostre que foram criadas duas contas de armazenamento, vai executar o comando Get-AzResource
para se centrar nos recursos de saída.
Execute o seguinte comando Get-AzResource
para garantir que os recursos foram implementados:
Get-AzResource -Name tailwindsa* -ResourceGroupName <rgn>resource group name</rgn> | Select-Object -Property Name,ResourceId
O argumento tailwindsa*
especifica para mostrar apenas os identificadores que correspondem ao prefixo do nome deu os recursos.
A saída é semelhante ao seguinte:
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…
Neste exemplo:
- tailwindsa185277781 é o nome base que foi gerado para a conta de armazenamento (
"tailwindsa" + Get-Random -Count 1
). - tailwindsa1852777810 (o nome base mais “0”) é a primeira conta de armazenamento.
- tailwindsa1852777811 (o nome base mais “1”) é a segunda conta de armazenamento.
Bom trabalho! À medida que as suas necessidades mudam, como o escalão de desempenho necessário, pode modificar as definições dos recursos numa única localização.
Limpeza
O sandbox limpará automaticamente os seus recursos quando concluir este módulo.
Ao trabalhar na sua própria subscrição, recomendamos que verifique, depois de concluir um projeto, se ainda vai precisar dos recursos que criou. Os recursos que você deixa funcionando podem custar dinheiro. Pode eliminar recursos individualmente ou eliminar o grupo de recursos para eliminar todo o conjunto de recursos.
Criar o modelo ARM
Agora, irá criar um modelo do Azure Resource Manager (ARM) que define um recurso da conta de armazenamento. O modelo utiliza copy
para criar versões semelhantes do mesmo recurso um determinado número de vezes.
No Visual Studio Code, crie um ficheiro chamado copy.json no mesmo diretório que contém azuredeploy.json.
Adicione estes conteúdos ao 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": {} }
O parâmetro storageCount
define o número de cópias a criar.
Em resources
, observe o recurso da conta de armazenamento. Para tornar o nome da conta de armazenamento exclusivo, o modelo utiliza copyIndex()
para acrescentar o índice atual ao nome da conta de armazenamento.
A secção copy
lê o número de cópias a serem feitas a partir do parâmetro storageCount
.
Implementar o modelo
Vai agora implementar o modelo como fez anteriormente. O passo de implementação aprovisiona duas contas de armazenamento semelhantes.
Crie uma variável Bash com o nome da conta de armazenamento.
STORAGE_ACCT_NAME=tailwindsa$RANDOM
Para implementar o modelo, execute o seguinte comando
az deployment group create
:az deployment group create \ --template-file copy.json \ --parameters storageAccountName=$STORAGE_ACCT_NAME storageCount=2
Agora, vai definir
storageCount
como2
para aprovisionar duas contas de armazenamento.
Verificar a implementação
Embora a saída mostre que foram criadas duas contas de armazenamento, vai executar o comando az deployment group show
para se centrar nos recursos de saída.
Execute o seguinte comando az deployment group show
para apresentar os detalhes sobre a implementação:
az deployment group show \
--name copy \
--query "properties.outputResources[].id" \
--output tsv
O argumento --query
especifica para mostrar apenas os identificadores dos recursos de saída.
A saída é semelhante ao seguinte:
/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
Neste exemplo:
- tailwindsa982 é o nome base que foi gerado para a conta de armazenamento (
tailwindsa$RANDOM
). - tailwindsa9820 (o nome base mais “0”) é a primeira conta de armazenamento.
- tailwindsa9821 (o nome base mais “1”) é a segunda conta de armazenamento.
Bom trabalho! À medida que as suas necessidades mudam, como o escalão de desempenho necessário, pode modificar as definições dos recursos numa única localização.
Limpeza
O sandbox limpará automaticamente os seus recursos quando concluir este módulo.
Ao trabalhar na sua própria subscrição, recomendamos que verifique, depois de concluir um projeto, se ainda vai precisar dos recursos que criou. Os recursos que você deixa funcionando podem custar dinheiro. Pode eliminar recursos individualmente ou eliminar o grupo de recursos para eliminar todo o conjunto de recursos.