Exercício — Usar copy para reduzir a repetição
Neste exercício final, você continuará a trabalhar com contas de armazenamento. Desta vez, você usará o constructo copy
para provisionar várias contas de armazenamento com base em uma só definição.
O Copy
oferece um só local central que você precisará atualizar quando seus requisitos forem alterados.
Criar um modelo do ARM
Aqui, você criará um modelo do ARM (Azure Resource Manager) que define um recurso de conta de armazenamento. O modelo usa copy
para criar versões semelhantes do mesmo recurso um número especificado de vezes.
No Visual Studio Code, crie um arquivo chamado copy.json no mesmo diretório que contém azuredeploy.json.
Adicione este conteúdo 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 serem criadas.
Em resources
, observe o recurso da conta de armazenamento. Para tornar o nome da conta de armazenamento exclusivo, o modelo usa copyIndex()
para anexar o índice atual ao nome da conta de armazenamento.
A seção copy
lê o número de cópias a serem feitas do parâmetro storageCount
.
Implantar o modelo
Aqui, você implanta o modelo como fez anteriormente. A etapa de implantação provisiona duas contas de armazenamento semelhantes.
Crie uma variável do PowerShell que contenha o nome da conta de armazenamento.
$STORAGE_ACCT_NAME="tailwindsa" + (Get-Random -Count 1)
Execute o seguinte comando
New-AzResourceGroupDeployment
para implantar o modelo:New-AzResourceGroupDeployment ` -TemplateFile "./copy.json" ` -storageAccountName $STORAGE_ACCT_NAME ` -storageCount 2
Aqui, você define
storageCount
como2
para provisionar duas contas de armazenamento.
Verificar a implantação
Embora a saída mostre que duas contas de armazenamento foram criadas, aqui você executa o comando Get-AzResource
para se concentrar nos recursos de saída.
Execute o seguinte comando Get-AzResource
para garantir que os recursos foram implantados:
Get-AzResource -Name tailwindsa* -ResourceGroupName <rgn>resource group name</rgn> | Select-Object -Property Name,ResourceId
O argumento tailwindsa*
especifica que serão mostrados apenas os identificadores que correspondem ao prefixo do nome que você forneceu aos recursos.
A saída será semelhante a esta:
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.
Ótimo trabalho! Conforme suas necessidades mudam, como o nível de desempenho de que você precisa, é possível modificar suas definições de recursos em um único local.
Limpar
A área restrita limpará automaticamente seus recursos quando você concluir este módulo.
Quando já estiver trabalhando na sua assinatura, analise se você ainda precisa dos recursos criados no fim de um projeto. Os recursos que você deixa em execução podem lhe custar dinheiro. Você pode excluir os recursos individualmente ou excluir o grupo de recursos para excluir todo o conjunto de recursos.
Criar um modelo do ARM
Aqui, você criará um modelo do ARM (Azure Resource Manager) que define um recurso de conta de armazenamento. O modelo usa copy
para criar versões semelhantes do mesmo recurso um número especificado de vezes.
No Visual Studio Code, crie um arquivo chamado copy.json no mesmo diretório que contém azuredeploy.json.
Adicione este conteúdo 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 serem criadas.
Em resources
, observe o recurso da conta de armazenamento. Para tornar o nome da conta de armazenamento exclusivo, o modelo usa copyIndex()
para anexar o índice atual ao nome da conta de armazenamento.
A seção copy
lê o número de cópias a serem feitas do parâmetro storageCount
.
Implantar o modelo
Aqui, você implanta o modelo como fez anteriormente. A etapa de implantação provisiona duas contas de armazenamento semelhantes.
Crie uma variável Bash que contenha o nome da conta de armazenamento.
STORAGE_ACCT_NAME=tailwindsa$RANDOM
Execute o seguinte comando
az deployment group create
para implantar o modelo:az deployment group create \ --template-file copy.json \ --parameters storageAccountName=$STORAGE_ACCT_NAME storageCount=2
Aqui, você define
storageCount
como2
para provisionar duas contas de armazenamento.
Verificar a implantação
Embora a saída mostre que duas contas de armazenamento foram criadas, aqui você executa o comando az deployment group show
para se concentrar nos recursos de saída.
Execute o seguinte comando az deployment group show
para exibir detalhes sobre a implantação:
az deployment group show \
--name copy \
--query "properties.outputResources[].id" \
--output tsv
O argumento --query
especifica que serão mostrados apenas os identificadores dos recursos de saída.
A saída será semelhante a esta:
/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.
Ótimo trabalho! Conforme suas necessidades mudam, como o nível de desempenho de que você precisa, é possível modificar suas definições de recursos em um único local.
Limpar
A área restrita limpará automaticamente seus recursos quando você concluir este módulo.
Quando já estiver trabalhando na sua assinatura, analise se você ainda precisa dos recursos criados no fim de um projeto. Os recursos que você deixa em execução podem lhe custar dinheiro. Você pode excluir os recursos individualmente ou excluir o grupo de recursos para excluir todo o conjunto de recursos.