Exercício – Implantar modelos do ARM vinculados e aninhados
Observação
Na primeira vez que você ativar uma área restrita e aceitar os termos, sua conta Microsoft será associada a um novo diretório do Azure chamado Área Restrita do Microsoft Learn. Você será adicionado a uma assinatura especial denominada Assinatura do Concierge.
Aqui, você implantará um modelo que inclui dois modelos vinculados no ambiente de área restrita fornecido.
Este exercício usará Ferramentas do Azure Resource Manager para Visual Studio Code. Certifique-se de instalar essa extensão no Visual Studio Code.
Configurar o ambiente de teste com a assinatura fornecida da área restrita do Azure
Para executar cada implantação nessa unidade, você precisa entrar em sua conta do Azure por meio do terminal do Visual Studio Code.
Verifique se você está entrando na mesma conta que ativou a área restrita.
Entrar no Azure
Do terminal no Visual Studio Code, execute o comando a seguir para entrar no Azure. A execução deste comando abre um navegador que permite que você entre na sua conta.
Connect-AzAccount
Depois de entrar, você vê uma lista das assinaturas associadas a essa conta no terminal. Se você ativou a área restrita, a Assinatura de Concierge deve estar nesta lista.
Obtenha a ID da assinatura. O comando a seguir lista suas assinaturas e as respectivas IDs em um formato de tabela fácil de ler. A ID da assinatura será a segunda coluna. Procure
Concierge Subscription
e copie a segunda coluna. É algo semelhante aaaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e
.Get-AzSubscription
Altere sua assinatura ativa para a assinatura do concierge. Substitua
{Your subscription ID}
pela ID da Assinatura de Concierge que você obteve com o comando anterior.$context = Get-AzSubscription -SubscriptionId {Your subscription ID} Set-AzContext $context
Definir o grupo de recursos padrão
Agora você precisará definir o grupo de recursos criado para você na área restrita como o grupo de recursos padrão. Para executar essa operação, primeiro você precisa obter o nome do grupo de recursos usando o seguinte comando:
Get-AzResourceGroup
Nesse comando, use o nome do recurso que você obteve com o comando anterior. É algo semelhante a learn-a73131a1-b618-48b8-af70-21af7ca420c4
. Esse comando permite omitir o parâmetro do restante dos comandos do Azure PowerShell neste exercício.
Observação
Normalmente, quando usa um comando do PowerShell ou da CLI do Azure para implantar um modelo, você precisa especificar o nome do grupo de recursos de destino. No exercício neste módulo, estamos ignorando esse requisito definindo o contexto da implantação. Vamos especificar o nome do grupo de recursos na área restrita na próxima etapa usando o comando Set-AzDefault do PowerShell.
Set-AzDefault -ResourceGroupName {Resource Group Name}
Implantar um modelo vinculado
Neste exercício, vamos analisar e implantar um modelo que inclui dois modelos vinculados.
Para adicionar um modelo vinculado ao modelo do ARM, adicione um recurso
Microsoft.Resources/deployments
e a propriedadetemplateLink
configurada com a localização do modelo.No modelo de exemplo a seguir, observe que duas variáveis definem os modelos remotos ou externos localizados em um repositório do GitHub.
Confira o modelo e observe as seções
"type": "Microsoft.Resources/deployments"
que definem onde e como os modelos vinculados são implantados.O primeiro modelo vinculado implanta uma conta de armazenamento. Ele consome os parâmetros pai e implanta o modelo de armazenamento.
O segundo modelo vinculado é configurado para depender da implantação de armazenamento e para implantar um modelo de rede virtual.
{ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": { "name": { "type": "string", "defaultValue": "linkeddemo001" } }, "variables": { "linked-template": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.storage/storage-account-create/azuredeploy.json", "linked-template-2": "https://raw.githubusercontent.com/Azure/azure-docs-json-samples/master/azure-resource-manager/what-if/what-if-before.json" }, "resources": [ { "name": "storage", "type": "Microsoft.Resources/deployments", "apiVersion": "2019-10-01", "properties": { "mode": "Incremental", "templateLink": { "uri": "[variables('linked-template')]", "contentVersion": "1.0.0.0" }, "parameters": { "location": { "value": "[resourceGroup().location]" } } } }, { "name": "identity", "type": "Microsoft.Resources/deployments", "apiVersion": "2019-10-01", "dependsOn": [ "[resourceId('Microsoft.Resources/deployments','storage')]" ], "properties": { "mode": "Incremental", "templateLink": { "uri": "[variables('linked-template-2')]", "contentVersion": "1.0.0.0" } } } ], "outputs": {} }
Copie e cole o conteúdo do modelo anterior em um arquivo de um diretório local. Use
C:\JSON\linkedtemplate.json
, por exemplo.Após salvar o arquivo localmente, use o comando do PowerShell a seguir para implantá-lo no nível do grupo de recursos que abordamos na última unidade. A saber, use New-AzResourceGroupDeployment.
$templateFile="C:\JSON\linkedtemplate.json" $today=Get-Date -Format "MM-dd-yyyy" $DeploymentName="DeployLinkedTemplate-"+"$today" New-AzResourceGroupDeployment ` -Name $DeploymentName ` -TemplateFile $templateFile
Após a conclusão, você terá resultados semelhantes ao exemplo a seguir.
Valide os resultados.
Vá para o portal do Azure e verifique se você está na assinatura da área restrita. Para fazer isso, selecione seu avatar no canto superior direito da página. Selecione Mudar diretório. Na lista, escolha o diretório Área restrita do Microsoft Learn.
No painel esquerdo, selecione Grupos de recursos.
Selecione
[nome do grupo de recursos de área restrita] .Na área Visão geral, você verá que a implantação foi bem-sucedida. Selecione 3 Êxito para ver os detalhes da implantação. (Pode haver mais implantações concluídas, dependendo se você realizou os exercícios da unidade anterior.)
Observe que você implantou apenas um modelo, mas há três listados no painel de implantação do portal. Essas três implantações correspondem ao modelo principal e aos dois modelos vinculados.
Entrar no Azure
Do terminal no Visual Studio Code, execute o comando a seguir para entrar no Azure. A execução deste comando abre um navegador que permite que você entre na sua conta.
az login
Após entrar, você verá uma lista em JSON das assinaturas associadas a essa conta no terminal. Se você ativou a área restrita, a Assinatura de Concierge deve estar nesta lista.
Obtenha a ID da assinatura. O comando a seguir lista suas assinaturas e as respectivas IDs. A ID da assinatura é a terceira coluna. Procure por
Concierge Subscription
e copie a terceira coluna. É algo semelhante aaaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e
.az account list -o table
Altere sua assinatura ativa para a assinatura do concierge. Substitua
{Your subscription ID}
pela ID da Assinatura de Concierge que você obteve com o comando anterior.az account set -s {Your subscription ID}
Definir o grupo de recursos padrão
Agora você precisará definir o grupo de recursos criado para você na área restrita como o grupo de recursos padrão. Para executar essa operação, primeiro você precisa obter o nome do grupo de recursos usando o seguinte comando:
az group list -o table
Nesse comando, use o nome do grupo de recursos que você obteve com o comando anterior. (Ele se parece com learn-a73131a1-b618-48b8-af70-21af7ca420c4
.) Definir esse padrão permite que você omita esse parâmetro do restante dos comandos da CLI do Azure neste exercício.
Observação
Normalmente, ao usar um comando da CLI do Azure para implantar um modelo, você precisa especificar o nome do grupo de recursos de destino. No exercício neste módulo, estamos ignorando esse requisito definindo o contexto da implantação. Vamos especificar o nome do grupo de recursos da área restrita na próxima etapa usando o comando az configure da CLI do Azure.
az configure --defaults group={Resource Group Name}
Implantar um modelo vinculado
Neste exercício, vamos analisar e implantar um modelo que inclui dois modelos vinculados.
Para adicionar um modelo vinculado ao modelo do ARM, adicione um recurso
Microsoft.Resources/deployments
e a propriedadetemplateLink
configurada com a localização do modelo.No modelo de exemplo a seguir, observe que duas variáveis definem os modelos remotos ou externos localizados em um repositório do GitHub.
Confira o modelo e observe as seções
"type": "Microsoft.Resources/deployments"
que definem onde e como os modelos vinculados são implantados.O primeiro modelo vinculado implanta uma conta de armazenamento. Ele consome os parâmetros pai e implanta o modelo de armazenamento.
O segundo modelo vinculado é configurado para depender da implantação de armazenamento e para implantar um modelo de rede virtual.
{ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": { "name": { "type": "string", "defaultValue": "linkeddemo001" } }, "variables": { "linked-template": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.storage/storage-account-create/azuredeploy.json", "linked-template-2": "https://raw.githubusercontent.com/Azure/azure-docs-json-samples/master/azure-resource-manager/what-if/what-if-before.json" }, "resources": [ { "name": "storage", "type": "Microsoft.Resources/deployments", "apiVersion": "2019-10-01", "properties": { "mode": "Incremental", "templateLink": { "uri": "[variables('linked-template')]", "contentVersion": "1.0.0.0" }, "parameters": { "location": { "value": "[resourceGroup().location]" } } } }, { "name": "identity", "type": "Microsoft.Resources/deployments", "apiVersion": "2019-10-01", "dependsOn": [ "[resourceId('Microsoft.Resources/deployments','storage')]" ], "properties": { "mode": "Incremental", "templateLink": { "uri": "[variables('linked-template-2')]", "contentVersion": "1.0.0.0" } } } ], "outputs": {} }
Copie e cole o conteúdo do modelo anterior em um arquivo de um diretório local. Use
C:\JSON\linkedtemplate.json or /mnt/c/Users/you/json/linkedtemplate.json
, por exemplo.Depois de salvar o arquivo localmente, implante-o no nível do grupo de recursos usando o comando a seguir da CLI do Azure. A saber, use az deployment group create.
templateFile=/mnt/c/Users/<UserName>/json/linkedtemplate.json today=$(date +"%Y-%m-%d") deploymentname="DeployLocalTemplate-3-"$today az deployment group create \ --name $deploymentname \ --template-file $templateFile
Após a conclusão, você deverá ter resultados semelhantes ao exemplo a seguir. Verifique o valor de
"provisioningState"
para garantir que a implantação foi bem-sucedida.{- Finished .. "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/learn-bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/providers/Microsoft.Resources/deployments/DeployLocalTemplate-3-2020-08-19", "location": null, "name": "DeployLocalTemplate-3-2020-08-19", "properties": { "correlationId": "aaaa0000-bb11-2222-33cc-444444dddddd", "debugSetting": null, "dependencies": [ { "dependsOn": [ { "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/learn-bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/providers/Microsoft.Resources/deployments/storage", "resourceGroup": "learn-bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f", "resourceName": "storage", "resourceType": "Microsoft.Resources/deployments" } ], "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/learn-bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/providers/Microsoft.Resources/deployments/identity", "resourceGroup": "learn-bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f", "resourceName": "identity", "resourceType": "Microsoft.Resources/deployments" } ], "duration": "PT16.4639167S", "error": null, "mode": "Incremental", "onErrorDeployment": null, "outputResources": [ { "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/learn-bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/providers/Microsoft.Network/virtualNetworks/vnet-001", "resourceGroup": "learn-bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f" }, { "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/learn-bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/providers/Microsoft.Storage/storageAccounts/store7zk7eyqew54l4", "resourceGroup": "learn-bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f" } ], "outputs": {}, "parameters": { "name": { "type": "String", "value": "linkeddemo001" } }, "parametersLink": null, "providers": [ { "id": null, "namespace": "Microsoft.Resources", "registrationPolicy": null, "registrationState": null, "resourceTypes": [ { "aliases": null, "apiVersions": null, "capabilities": null, "locations": [ null ], "properties": null, "resourceType": "deployments" } ] } ], "provisioningState": "Succeeded", "templateHash": "12700491000282730217", "templateLink": null, "timestamp": "2020-08-19T21:07:18.729310+00:00", "validatedResources": null }, "resourceGroup": "learn-bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f", "tags": null, "type": "Microsoft.Resources/deployments" }
Valide os resultados.
Vá para o portal do Azure e verifique se você está na assinatura da área restrita. Para fazer isso, selecione seu avatar no canto superior direito da página. Selecione Mudar diretório. Na lista, escolha o diretório Área restrita do Microsoft Learn.
No painel esquerdo, selecione Grupos de recursos.
Selecione
[nome do grupo de recursos de área restrita] .Na área Visão geral, você verá que a implantação foi bem-sucedida. Selecione 3 Êxito para ver os detalhes da implantação. (Pode haver mais implantações concluídas, dependendo se você realizou os exercícios da unidade anterior.)
Observe que você implantou apenas um modelo, mas há três listados no painel de implantação do portal. Essas três implantações correspondem ao modelo principal e aos dois modelos vinculados.