Exercício – Visualizar alterações com o comando what-if
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ê também será adicionado a uma assinatura especial chamada Assinatura do Concierge.
A equipe de design na sua empresa de brinquedos pediu para você atualizar um modelo que configura uma rede virtual. Nesta unidade, você usa o teste de hipóteses para verificar os efeitos da implantação do modelo atualizado.
Durante o processo, você vai:
- Crie e implante um modelo inicial.
- Prepare-se para implantar um modelo ligeiramente diferente e use a operação do teste de hipóteses para examinar as alterações esperadas.
- Use uma implantação completa para implantar um modelo vazio e use a operação do teste de hipóteses para examinar as alterações esperadas.
Este exercício usará a extensão Ferramentas do Azure Resource Manager para Visual Studio Code. É necessário que você instale essa extensão no Visual Studio Code.
Este exercício usa a extensão Bicep para Visual Studio Code. É necessário que você instale essa extensão no Visual Studio Code.
Criar um modelo inicial
Comece com um modelo existente que a sua equipe está usando. O modelo cria a rede virtual.
Abra o Visual Studio Code.
Crie um arquivo chamado azuredeploy.json.
Salve o arquivo vazio para que o Visual Studio Code carregue as ferramentas de modelo do ARM.
Você pode selecionar Arquivo>Salvar Como ou Ctrl+S no Windows (⌘+S no macOS). Lembre-se de onde você salvou o arquivo. Por exemplo, você pode criar uma pasta scripts para salvá-lo.
Copie o código a seguir no azuredeploy.json.
{ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": {}, "variables": {}, "resources": [ { "apiVersion": "2024-05-01", "type": "Microsoft.Network/virtualNetworks", "name": "vnet-001", "location": "[resourceGroup().location]", "tags": { "CostCenter": "12345", "Owner": "Team A" }, "properties": { "addressSpace": { "addressPrefixes": [ "10.0.0.0/16" ] }, "enableVmProtection": false, "enableDdosProtection": false, "subnets": [ { "name": "subnet001", "properties": { "addressPrefix": "10.0.0.0/24" } }, { "name": "subnet002", "properties": { "addressPrefix": "10.0.1.0/24" } } ] } } ] }
Salve o modelo.
Abra o Visual Studio Code.
Crie um arquivo chamado main.bicep.
Salve o arquivo vazio para que Visual Studio Code carregue as ferramentas Bicep.
Você pode selecionar Arquivo>Salvar Como ou Ctrl+S no Windows (⌘+S no macOS). Lembre-se de onde você salvou o arquivo. Por exemplo, você pode criar uma pasta scripts para salvá-lo.
Copie o código a seguir para main.bicep.
param location string = resourceGroup().location resource vnet 'Microsoft.Network/virtualNetworks@2024-05-01' = { name: 'vnet-001' location: location tags: { CostCenter: '12345' Owner: 'Team A' } properties: { addressSpace: { addressPrefixes: [ '10.0.0.0/16' ] } enableVmProtection: false enableDdosProtection: false subnets: [ { name: 'subnet001' properties: { addressPrefix: '10.0.0.0/24' } } { name: 'subnet002' properties: { addressPrefix: '10.0.1.0/24' } } ] } }
Salve o modelo.
Implantar o modelo no Azure
Para implantar esse modelo no Azure, entre na sua conta do Azure por meio do terminal do Visual Studio Code. Verifique se você instalou o Azure PowerShell e entre na mesma conta que ativou a área restrita.
No menu Terminal, selecione Novo Terminal. A janela do terminal geralmente é aberta na metade inferior da tela.
Se a janela do terminal exibir pwsh ou powershell no lado direito, significa que o shell correto já está aberto. Como alternativa, se você vir um ícone do shell do PowerShell à direita, você poderá selecioná-lo para iniciar o shell.
Se um shell diferente de pwsh ou powershell aparecer, selecione a seta suspensa do shell e, em seguida, selecione PowerShell.
No terminal, vá até o diretório no qual você salvou o modelo. Por exemplo, se você salvou o modelo na pasta modelos, use este comando:
Set-Location -Path templates
Instalar a CLI do Bicep
Para usar o Bicep no Azure PowerShell, instale a CLI do Bicep.
Entrar no Azure usando o Azure PowerShell
No terminal do Visual Studio Code, execute o seguinte comando:
Connect-AzAccount
Um navegador será aberto para que seja possível entrar na sua conta do Azure. O navegador pode ser aberto em segundo plano.
Após entrar no Azure, o terminal exibirá uma lista das assinaturas associadas a essa conta. Se você ativou a área restrita, será exibida uma assinatura chamada Assinatura do Concierge. Selecione-a para o restante do exercício.
Se você usou mais de uma área restrita recentemente, o terminal poderá exibir mais de uma instância da Assinatura do Concierge. Nesse caso, use as duas próximas etapas para definir uma delas como a assinatura padrão.
Obtenha a ID da assinatura. Executar o comando a seguir lista as suas assinaturas e as respectivas IDs. Procure
Concierge Subscription
e copie a ID da segunda coluna. É algo semelhante aaaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e
.Get-AzSubscription
Altere a sua assinatura ativa para Assinatura de Concierge. Lembre-se de substituir {Sua ID da assinatura} por aquela que você copiou.
$context = Get-AzSubscription -SubscriptionId {Your subscription ID} Set-AzContext $context
Definir o grupo de recursos padrão
Você pode definir o grupo de recursos padrão e omitir o parâmetro do restante dos comandos do Azure PowerShell neste exercício. Defina esse padrão como o grupo de recursos criado para você no ambiente de área restrita.
Set-AzDefault -ResourceGroupName <rgn>[sandbox resource group name]</rgn>
Para implantar esse modelo no Azure, será necessário entrar em sua conta do Azure do terminal do Visual Studio Code. Verifique se você tem a CLI do Azure instalada e lembre-se de entrar com a mesma conta que usou para ativar a área restrita.
No menu Terminal, selecione Novo Terminal. A janela do terminal geralmente é aberta na metade inferior da tela.
Se a janela do terminal exibir bash no lado direito, significa que o shell correto já está aberto. Alternativamente, se você vir um ícone do shell bash à direita, você poderá selecioná-lo para iniciar o shell.
Se aparecer um shell diferente do bash, selecione a seta da lista de seleção do shell e selecione Git Bash.
No terminal, vá até o diretório no qual você salvou o modelo. Por exemplo, se você salvou o modelo na pasta modelos, use este comando:
cd templates
Instalar o Bicep
Veja se você tem a versão mais recente do Bicep executando o seguinte comando:
az bicep install && az bicep upgrade
Entrar no Azure
No terminal do Visual Studio Code, entre no Azure executando o seguinte comando:
az login
No navegador que é aberto, entre em sua conta do Azure. O terminal do Visual Studio Code exibe uma lista das assinaturas associadas a essa conta. Selecione a assinatura chamada Assinatura Concierge.
Se você usou mais de uma área restrita recentemente, o terminal poderá exibir mais de uma instância da Assinatura do Concierge. Nesse caso, use as duas próximas etapas para definir uma delas como a assinatura padrão.
Obtenha as IDs da Assinatura do Concierge.
az account list \ --refresh \ --query "[?contains(name, 'Concierge Subscription')].id" \ --output table
Defina a assinatura padrão usando a ID da assinatura. Substitua {sua ID da assinatura} pela ID da Assinatura de Concierge mais recente.
az account set --subscription {your subscription ID}
Definir o grupo de recursos padrão
Ao usar a CLI do Azure, você pode definir o grupo de recursos padrão e omitir o parâmetro do restante dos comandos da CLI do Azure neste exercício. Defina como padrão o grupo de recursos criado para você no ambiente de área restrita.
az configure --defaults group="<rgn>[sandbox resource group name]</rgn>"
Para implantar este modelo no Azure, entre na sua conta do Azure no terminal do Visual Studio Code. Verifique se você instalou o Azure PowerShell e entre na mesma conta que ativou a área restrita.
No menu Terminal, selecione Novo Terminal. A janela do terminal geralmente é aberta na metade inferior da tela.
Se a janela do terminal exibir pwsh ou powershell no lado direito, significa que o shell correto já está aberto. Como alternativa, se você vir um ícone do shell do PowerShell à direita, você poderá selecioná-lo para iniciar o shell.
Se um shell diferente de pwsh ou powershell aparecer, selecione a seta suspensa do shell e, em seguida, selecione PowerShell.
No terminal, vá até o diretório no qual você salvou o modelo. Por exemplo, se você salvou o modelo na pasta modelos, use este comando:
Set-Location -Path templates
Entrar no Azure usando o Azure PowerShell
No terminal do Visual Studio Code, execute o seguinte comando:
Connect-AzAccount
Um navegador será aberto para que seja possível entrar na sua conta do Azure. O navegador pode ser aberto em segundo plano.
Após entrar no Azure, o terminal exibirá uma lista das assinaturas associadas a essa conta. Se você ativou a área restrita, será exibida uma assinatura chamada Assinatura do Concierge. Selecione-a para o restante do exercício.
Se você usou mais de uma área restrita recentemente, o terminal poderá exibir mais de uma instância da Assinatura do Concierge. Nesse caso, use as duas próximas etapas para definir uma delas como a assinatura padrão.
Obtenha a ID da assinatura. Executar o comando a seguir lista as suas assinaturas e as respectivas IDs. Procure
Concierge Subscription
e copie a ID da segunda coluna. É algo semelhante aaaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e
.Get-AzSubscription
Altere a sua assinatura ativa para Assinatura de Concierge. Lembre-se de substituir {Sua ID da assinatura} por aquela que você copiou.
$context = Get-AzSubscription -SubscriptionId {Your subscription ID} Set-AzContext $context
Definir o grupo de recursos padrão
Você pode definir o grupo de recursos padrão e omitir o parâmetro do restante dos comandos do Azure PowerShell neste exercício. Defina esse padrão como o grupo de recursos criado para você no ambiente de área restrita.
Set-AzDefault -ResourceGroupName <rgn>[sandbox resource group name]</rgn>
Para implantar esse modelo no Azure, será necessário entrar em sua conta do Azure do terminal do Visual Studio Code. Verifique se você tem a CLI do Azure instalada e lembre-se de entrar com a mesma conta que usou para ativar a área restrita.
No menu Terminal, selecione Novo Terminal. A janela do terminal geralmente é aberta na metade inferior da tela.
Se a janela do terminal exibir bash no lado direito, significa que o shell correto já está aberto. Alternativamente, se você vir um ícone do shell bash à direita, você poderá selecioná-lo para iniciar o shell.
Se aparecer um shell diferente do bash, selecione a seta da lista de seleção do shell e selecione Git Bash.
No terminal, vá até o diretório no qual você salvou o modelo. Por exemplo, se você salvou o modelo na pasta modelos, use este comando:
cd templates
Entrar no Azure
No terminal do Visual Studio Code, entre no Azure executando o seguinte comando:
az login
No navegador que é aberto, entre em sua conta do Azure. O terminal do Visual Studio Code exibe uma lista das assinaturas associadas a essa conta. Selecione a assinatura chamada Assinatura Concierge.
Se você usou mais de uma área restrita recentemente, o terminal poderá exibir mais de uma instância da Assinatura do Concierge. Nesse caso, use as duas próximas etapas para definir uma delas como a assinatura padrão.
Obtenha as IDs da Assinatura do Concierge.
az account list \ --refresh \ --query "[?contains(name, 'Concierge Subscription')].id" \ --output table
Defina a assinatura padrão usando a ID da assinatura. Substitua {sua ID da assinatura} pela ID da Assinatura de Concierge mais recente.
az account set --subscription {your subscription ID}
Definir o grupo de recursos padrão
Ao usar a CLI do Azure, você pode definir o grupo de recursos padrão e omitir o parâmetro do restante dos comandos da CLI do Azure neste exercício. Defina como padrão o grupo de recursos criado para você no ambiente de área restrita.
az configure --defaults group="<rgn>[sandbox resource group name]</rgn>"
Implantar o modelo usando o Azure PowerShell
Para implantar o modelo, execute New-AzResourceGroupDeployment
.
New-AzResourceGroupDeployment -Name main -TemplateFile main.bicep
O texto Executando... aparece no terminal. A implantação leva um ou dois minutos para ser concluída.
Implantar o modelo usando o Azure PowerShell
Para implantar o modelo, execute New-AzResourceGroupDeployment
.
New-AzResourceGroupDeployment -Name main -TemplateFile azuredeploy.json
O texto Executando... aparece no terminal. A implantação leva um ou dois minutos para ser concluída.
Implantar o modelo usando a CLI do Microsoft Azure
Para implantar o modelo, execute az deployment group create
.
az deployment group create --name main --template-file main.bicep
A implantação leva um ou dois minutos para ser concluída.
Implantar o modelo usando a CLI do Microsoft Azure
Para implantar o modelo, execute az deployment group create
.
az deployment group create --name main --template-file azuredeploy.json
A implantação leva um ou dois minutos para ser concluída.
Verificar a implantação
Para validar se a implantação foi criada e enviada ao Azure, acesse o portal do Azure e verifique se você está na assinatura de área restrita:
Selecione seu avatar no canto superior da página.
Selecione Mudar diretório. Na lista, selecione o diretório Área restrita do Microsoft Learn.
Selecione Grupos de recursos.
Selecione
[nome do grupo de recursos de área restrita] .Na Visão Geral, você verá que a implantação foi bem-sucedida.
Selecione 1 Êxito para ver os detalhes da implantação.
Selecione a implantação principal para ver quais recursos foram implantados. Nesse caso, uma rede virtual (espaço de endereço 10.0.0.0/16) com duas sub-redes foi implantada.
Deixe a página aberta no navegador para que você possa verificar as implantações novamente mais tarde.
Modificar o modelo
No arquivo azuredeploy.json no Visual Studio Code, exclua a marca chamada
Owner
e o valor dela. Depois de terminar, a propriedadetags
da rede virtual deverá ter esta aparência:"tags": { "CostCenter": "12345" },
Atualize o
addressPrefixes
para alterar/16
para/15
. Depois de terminar, a propriedadeaddressSpace
da rede virtual deverá ter esta aparência:"addressSpace": { "addressPrefixes": [ "10.0.0.0/15" ] },
Exclua a sub-rede chamada
subnet001
. Exclua todo o objeto de sub-rede. Depois de terminar, a propriedadesubnets
da rede virtual deverá ter esta aparência:"subnets": [ { "name": "subnet002", "properties": { "addressPrefix": "10.0.1.0/24" } } ]
Salve o modelo.
No arquivo main.bicep no Visual Studio Code, exclua a marca chamada
Owner
e o valor dela. Depois de terminar, a propriedadetags
da rede virtual deverá ter esta aparência:tags: { CostCenter: '12345' }
Atualize o
addressPrefixes
para alterar o/16
para/15
. Depois de terminar, a propriedadeaddressSpace
da rede virtual deverá ter esta aparência:addressSpace: { addressPrefixes: [ '10.0.0.0/15' ] }
Exclua a sub-rede chamada
subnet001
. Exclua todo o objeto de sub-rede. Depois de terminar, a propriedadesubnets
da rede virtual deverá ter esta aparência:subnets: [ { name: 'subnet002' properties: { addressPrefix: '10.0.1.0/24' } } ]
Salve o modelo.
Execute o comando de teste de hipóteses com o modelo modificado
Execute New-AzResourceGroupDeployment
com o sinalizador -WhatIf
para realizar a operação teste de hipóteses.
New-AzResourceGroupDeployment `
-Name main `
-WhatIf `
-TemplateFile main.bicep
Execute New-AzResourceGroupDeployment
com o sinalizador -WhatIf
para realizar a operação teste de hipóteses.
New-AzResourceGroupDeployment `
-Name main `
-WhatIf `
-TemplateFile azuredeploy.json
Execute az deployment group what-if
para executar a operação de teste de hipóteses:
az deployment group what-if \
--template-file main.bicep
Execute az deployment group what-if
para executar a operação de teste de hipóteses:
az deployment group what-if \
--template-file azuredeploy.json
A saída do teste de hipóteses deverá ser semelhante à seguinte:
Observe que o resultado é codificado por cores, além de ter um prefixo:
- Roxo e ~ para qualquer modificação
- Verde e + para os recursos a serem criados
- Laranja e - para exclusões
Remova os recursos no modelo
Atualize o arquivo azuredeploy.json no Visual Studio Code e remova todo o conteúdo da matriz
resources
. Após a conclusão, o seu modelo deverá ter esta aparência:{ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "resources": [ ] }
Salve o modelo.
No arquivo main.bicep no Visual Studio Code, exclua todo o conteúdo do arquivo, mas não exclua o arquivo em si.
Salve o modelo.
Implantação com o modo completo e a opção de confirmação
Nestas próximas etapas, você implantará um modelo vazio no seu ambiente existente.
Aviso
Fazer isso na vida real removerá qualquer item que você tenha na nuvem. O código a seguir é interessante como um experimento intelectual, mas tenha cuidado ao usar esse modo. No mínimo, use o sinalizador -Confirm
para que você possa interromper a operação se não gostar das alterações propostas.
Aviso
Fazer isso na vida real removerá qualquer item que você tenha na nuvem. O código a seguir é interessante como um experimento intelectual, mas tenha cuidado ao usar esse modo. No mínimo, use o sinalizador --confirm-with-what-if
para que você possa interromper a operação se não gostar das alterações propostas.
Execute
New-AzResourceGroupDeployment
com o sinalizador-Mode Complete
para executar a implantação no modo completo:New-AzResourceGroupDeployment ` -Name main ` -Mode Complete ` -Confirm ` -TemplateFile main.bicep
A saída será semelhante ao seguinte:
Observe como a última linha da saída é uma confirmação. Ela solicita que você selecione s ou n para continuar.
Em [A] Sim para todos, insira A para executar a implantação e limpar o seu ambiente.
Execute
New-AzResourceGroupDeployment
com o sinalizador-Mode Complete
para executar a implantação no modo completo:New-AzResourceGroupDeployment ` -Name main ` -Mode Complete ` -Confirm ` -TemplateFile azuredeploy.json
A saída será semelhante ao seguinte:
Observe como a última linha da saída é uma confirmação. Ela solicita que você selecione s ou n para continuar.
Em [A] Sim para todos, insira A para executar a implantação e limpar o seu ambiente.
Execute
az deployment group create
com o sinalizador--mode Complete
para criar uma implantação no modo completo:az deployment group create \ --name main \ --mode Complete \ --confirm-with-what-if \ --template-file main.bicep
A saída será semelhante ao seguinte:
Observe como a última linha da saída é uma confirmação. Ela solicita que você selecione s ou n para continuar.
Insira y (para "sim") para executar a implantação e limpar o seu ambiente.
Execute
az deployment group create
com o sinalizador--mode Complete
para criar uma implantação no modo completo:az deployment group create \ --name main \ --mode Complete \ --confirm-with-what-if \ --template-file azuredeploy.json
A saída será semelhante ao seguinte:
Observe como a última linha da saída é uma confirmação. Ela solicita que você selecione s ou n para continuar.
Insira y (para "sim") para executar a implantação e limpar o seu ambiente.
Verificar a implantação
Volte para o navegador aberto que você usou anteriormente. Verifique se a rede virtual não está mais lá, como nesta captura de tela: