Exercício – Implementar modelos do Resource Manager associados e aninhados
Nota
A primeira vez que ativar um sandbox e aceitar os termos, a sua conta Microsoft será associada a um novo diretório do Azure chamado Microsoft Learn Sandbox. É adicionado a uma subscrição especial chamada Subscrição de Assistente.
Aqui, você implanta um modelo que inclui dois modelos vinculados no ambiente de área restrita fornecido.
Este exercício utiliza a extensão Azure Resource Manager Tools para Visual Studio Code. Certifique-se de que instala esta extensão no Visual Studio Code.
Configurar o seu ambiente de teste com a subscrição de sandbox do Azure fornecida
Para desempenhar cada implementação nesta unidade, precisa de iniciar sessão na sua conta do Azure a partir do terminal do Visual Studio Code.
Certifique-se de que está a iniciar sessão na mesma conta que ativou o sandbox.
Iniciar sessão no Azure
A partir do terminal do Visual Studio Code, execute o seguinte comando para iniciar sessão no Azure. Executar este comando abre um navegador que lhe permite iniciar sessão na sua conta.
Connect-AzAccount
Assim que tiver iniciado sessão, verá uma lista das subscrições associadas a esta conta no terminal. Se ativou o sandbox, a Subscrição de Assistente deverá estar nesta lista.
Obtenha o ID de subscrição. O comando a seguir lista suas assinaturas e seus IDs em um formato de tabela fácil de ler. O ID de subscrição é a segunda coluna. Procure
Concierge Subscription
e copie a segunda coluna. Parece algo comoaaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e
.Get-AzSubscription
Altere a sua subscrição ativa para a Subscrição de Assistente. Substitua
{Your subscription ID}
pelo ID da Subscrição de Assistente que obteve com o último comando.$context = Get-AzSubscription -SubscriptionId {Your subscription ID} Set-AzContext $context
Definir o grupo de recursos predefinido
Agora, tem de definir o grupo de recursos criado para si no sandbox como o grupo de recursos predefinido. Para realizar essa operação, primeiro tem de obter o nome do grupo de recursos através do seguinte comando:
Get-AzResourceGroup
Neste comando, utilize o nome do recurso que obteve no comando anterior. Parece algo como learn-a73131a1-b618-48b8-af70-21af7ca420c4
. Este comando permite-lhe omitir esse parâmetro do resto dos comandos do Azure PowerShell neste exercício.
Nota
Normalmente, quando utiliza um comando do PowerShell ou da CLI do Azure para implementar um modelo, tem de especificar o nome do grupo de recursos de destino. No exercício deste módulo, ignoramos este requisito ao definir o contexto da nossa implementação. Vamos especificar o nome do nosso grupo de recursos do sandbox no passo abaixo através do comando do PowerShell Set-AzDefault.
Set-AzDefault -ResourceGroupName {Resource Group Name}
Implementar um modelo ligado
Neste exercício, revisamos e implantamos um modelo que inclui dois modelos vinculados.
Para adicionar um modelo vinculado ao seu modelo ARM, adicione um
Microsoft.Resources/deployments
recurso e atemplateLink
propriedade configurada com o local do modelo.No modelo de exemplo a seguir, observe que duas variáveis definem modelos remotos ou externos localizados em um repositório GitHub.
Revise o modelo e observe as
"type": "Microsoft.Resources/deployments"
seções que definem onde e como os modelos vinculados são implantados.O primeiro modelo implementa uma conta de armazenamento. Consome os parâmetros principais e implementa o modelo de armazenamento.
O segundo modelo associado é configurado para depender da implementação de armazenamento e para implementar 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 os conteúdos do modelo anterior num ficheiro de um diretório local. Utilize
C:\JSON\linkedtemplate.json
, por exemplo.Depois de salvar o arquivo localmente, use o seguinte comando do PowerShell para implantá-lo no nível do grupo de recursos sobre o qual falamos na última unidade. Utilize New-AzResourceGroupDeployment.
$templateFile="C:\JSON\linkedtemplate.json" $today=Get-Date -Format "MM-dd-yyyy" $DeploymentName="DeployLinkedTemplate-"+"$today" New-AzResourceGroupDeployment ` -Name $DeploymentName ` -TemplateFile $templateFile
Depois que terminar, você deve ter resultados como o seguinte exmaple.
Valide os resultados.
Aceda ao portal do Azure e certifique-se de que está na subscrição do sandbox. Para tal, selecione o seu avatar no canto superior direito da página. Selecione Trocar diretório. Na lista, selecione o diretório Sandbox do Microsoft Learn.
No painel esquerdo, selecione Grupos de recursos.
Selecione
[nome do grupo de recursos do sandbox] .Na área Visão geral, você vê que a implantação foi bem-sucedida. Selecione 3 Efetuadas Com Êxito para ver os detalhes da implementação. (Poderão existir mais implementações concluídas, consoante tenha ou não realizado os exercícios da unidade anterior).
Repare que implementou um modelo, mas existem três listados no painel de implementação do portal. Essas três implementações correspondem ao modelo principal e os dos modelos associados.
Iniciar sessão no Azure
A partir do terminal do Visual Studio Code, execute o seguinte comando para iniciar sessão no Azure. Executar este comando abre um navegador que lhe permite iniciar sessão na sua conta.
az login
Assim que tiver iniciado sessão, verá uma lista JSON das subscrições associadas a esta conta no terminal. Se ativou o sandbox, a Subscrição de Assistente deverá estar nesta lista.
Obtenha o ID de subscrição. O comando a seguir lista suas assinaturas e suas IDs. O ID de subscrição é a terceira coluna. Procure
Concierge Subscription
e copie a terceira coluna. Parece algo comoaaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e
.az account list -o table
Altere a sua subscrição ativa para a Subscrição de Assistente. Substitua
{Your subscription ID}
pelo ID da Subscrição de Assistente que obteve com o último comando.az account set -s {Your subscription ID}
Definir o grupo de recursos predefinido
Agora, tem de definir o grupo de recursos criado para si no sandbox como o grupo de recursos predefinido. Para realizar essa operação, primeiro tem de obter o nome do grupo de recursos através do seguinte comando:
az group list -o table
Neste comando, use o nome do grupo de recursos que você obteve do comando anterior. (Parece algo como learn-a73131a1-b618-48b8-af70-21af7ca420c4
.) A definição desse padrão permite que você omita esse parâmetro do restante dos comandos da CLI do Azure neste exercício.
Nota
Normalmente, quando utiliza um comando da CLI do Azure para implementar um modelo, tem de especificar o nome do grupo de recursos de destino. No exercício deste módulo, ignoramos este requisito ao definir o contexto da nossa implementação. Vamos especificar o nome do nosso grupo de recursos do sandbox no passo abaixo através do comando da CLI do Azure az configure.
az configure --defaults group={Resource Group Name}
Implementar um modelo ligado
Neste exercício, revisamos e implantamos um modelo que inclui dois modelos vinculados.
Para adicionar um modelo vinculado ao seu modelo ARM, adicione um
Microsoft.Resources/deployments
recurso e atemplateLink
propriedade configurada com o local do modelo.No modelo de exemplo a seguir, observe que duas variáveis definem modelos remotos ou externos localizados em um repositório GitHub.
Revise o modelo e observe as
"type": "Microsoft.Resources/deployments"
seções que definem onde e como os modelos vinculados são implantados.O primeiro modelo implementa uma conta de armazenamento. Consome os parâmetros principais e implementa o modelo de armazenamento.
O segundo modelo associado é configurado para depender da implementação de armazenamento e para implementar 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 os conteúdos do modelo anterior num ficheiro de um diretório local. Utilize
C:\JSON\linkedtemplate.json or /mnt/c/Users/you/json/linkedtemplate.json
, por exemplo.Depois de salvar esse arquivo localmente, implante-o no nível do grupo de recursos usando o seguinte comando da CLI do Azure. Utilize 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
Depois de terminada a implementação, deverá ter resultados semelhantes ao exemplo abaixo. Confirme o valor
"provisioningState"
para se certificar de que a implementaçã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.
Aceda ao portal do Azure e certifique-se de que está na subscrição do sandbox. Para tal, selecione o seu avatar no canto superior direito da página. Selecione Trocar diretório. Na lista, selecione o diretório Sandbox do Microsoft Learn.
No painel esquerdo, selecione Grupos de recursos.
Selecione
[nome do grupo de recursos do sandbox] .Na área Visão geral, você vê que a implantação foi bem-sucedida. Selecione 3 Efetuadas Com Êxito para ver os detalhes da implementação. (Poderão existir mais implementações concluídas, consoante tenha ou não realizado os exercícios da unidade anterior).
Repare que implementou um modelo, mas existem três listados no painel de implementação do portal. Essas três implementações correspondem ao modelo principal e os dos modelos associados.