Exercício – Pré-visualizar alterações com o comando what-if
Nota
Na primeira vez que você ativar uma área restrita e aceitar os termos, sua conta da Microsoft será associada a um novo diretório do Azure chamado Microsoft Learn Sandbox. Você também é adicionado a uma assinatura especial chamada Assinatura do concierge.
A equipa de design da sua empresa de brinquedos pediu-lhe para atualizar um modelo que configura uma rede virtual. Nesta unidade, você usa hipóteses para verificar os efeitos da implantação do modelo atualizado.
Durante o processo, você:
- Crie e implante um modelo inicial.
- Prepare-se para implantar um modelo ligeiramente diferente e use a operação hipotética para revisar as alterações esperadas.
- Use uma implantação completa para implantar um modelo vazio e use a operação hipotética para revisar as alterações esperadas.
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.
Este exercício usa a extensão Bicep para Visual Studio Code. Certifique-se de que instala esta extensão no Visual Studio Code.
Criar o modelo inicial
Você começa com um modelo existente que sua equipe tem usado. O modelo cria a rede virtual.
Abra o Visual Studio Code.
Crie um novo arquivo chamado azuredeploy.json.
Salve o arquivo vazio para que o Visual Studio Code carregue as ferramentas de modelo 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, talvez você queira criar uma pasta de scripts para salvá-la.
Copie o código a seguir para azuredeploy.json.
{ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": {}, "variables": {}, "resources": [ { "apiVersion": "2024-01-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" } } ] } } ] }
Guarde o modelo.
Abra o Visual Studio Code.
Crie um novo arquivo chamado main.bicep.
Salve o arquivo vazio para que o Visual Studio Code carregue as ferramentas do Bíceps.
Você pode selecionar Arquivo>Salvar como ou Ctrl+S no Windows (⌘+S no macOS). Lembre-se de onde você salvou o arquivo. Por exemplo, talvez você queira criar uma pasta de scripts para salvá-la.
Copie o seguinte código para main.bicep.
resource vnet 'Microsoft.Network/virtualNetworks@2024-01-01' = { 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' } } ] } }
Guarde o modelo.
Implementar o modelo no Azure
Para implantar esse modelo no Azure, entre em sua conta do Azure a partir do terminal do Visual Studio Code. Certifique-se de que instalou o Azure PowerShell e inicie sessão na mesma conta que ativou a sandbox.
No menu Terminal, selecione New Terminal (Novo Terminal). A janela do terminal geralmente abre na metade inferior da tela.
Se o shell mostrado no lado direito da janela do terminal for powershell ou pwsh, o shell correto estará aberto e você poderá pular para a próxima seção.
Se um shell diferente de powershell ou pwsh for exibido, selecione a seta suspensa do shell e selecione PowerShell.
Na lista de shells de terminal, selecione powershell ou pwsh.
No terminal, vá para o diretório onde você salvou seu modelo. Por exemplo, se você salvou seu modelo na pasta de modelos , poderá usar este comando:
Set-Location -Path templates
Instalar a CLI do Bíceps
Para usar o Bicep do Azure PowerShell, instale a CLI do Bicep.
Iniciar sessão no Azure com o Azure PowerShell
No terminal de código do Visual Studio, execute o seguinte comando:
Connect-AzAccount
Um navegador é aberto para que você possa entrar em sua conta do Azure.
Depois de iniciar sessão no Azure, o terminal apresenta uma lista das subscrições associadas a esta conta.
Se você ativou a área restrita, uma assinatura chamada Assinatura do concierge será exibida. Use-o para o resto do exercício.
Defina a assinatura padrão para todos os comandos do Azure PowerShell executados nesta sessão.
$context = Get-AzSubscription -SubscriptionName 'Concierge Subscription' Set-AzContext $context
Nota
Se você usou mais de uma área restrita recentemente, o terminal pode exibir mais de uma instância da Assinatura do Concierge. Nesse caso, use as próximas duas etapas para definir uma como a assinatura padrão. Se o comando anterior tiver sido bem-sucedido e apenas uma Assinatura do Concierge estiver listada, ignore as duas próximas etapas.
Obtenha o ID de subscrição. A execução do comando a seguir lista suas assinaturas e suas IDs.
Concierge Subscription
Procure e, em seguida, copie o ID da segunda coluna. Parece algo comoaaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e
.Get-AzSubscription
Altere sua assinatura ativa para a Assinatura do Concierge. Certifique-se de que substitui {O seu ID de subscrição} pelo que copiou.
$context = Get-AzSubscription -SubscriptionId {Your subscription ID} Set-AzContext $context
Definir o grupo de recursos predefinido
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 para o grupo de recursos criado para você no ambiente de área restrita.
Set-AzDefault -ResourceGroupName <rgn>[sandbox resource group name]</rgn>
Para implementar este modelo no Azure, tem de iniciar sessão na sua conta do Azure a partir do terminal do Visual Studio Code. Certifique-se de que instalou a CLI do Azure e lembre-se de iniciar sessão com a mesma conta que utilizou para ativar a sandbox.
No menu Terminal, selecione New Terminal (Novo Terminal). A janela do terminal geralmente abre na metade inferior da tela.
Se o shell mostrado no lado direito da janela do terminal for bash, o shell correto estará aberto e você poderá pular para a próxima seção.
Se um shell diferente de bash for exibido, selecione a seta suspensa do shell e selecione Azure Cloud Shell (Bash).
Na lista de shells de terminal, selecione bash.
No terminal, vá para o diretório onde você salvou seu modelo. Por exemplo, se você salvou seu modelo na pasta de modelos , poderá usar este comando:
cd templates
Instalar o Bicep
Execute o seguinte comando para garantir que você tenha a versão mais recente do Bicep:
az bicep install && az bicep upgrade
Iniciar sessão no Azure
No terminal do Visual Studio Code, entre no Azure executando o seguinte comando:
az login
No browser que se abre, inicie sessão na sua conta do Azure.
O terminal de código do Visual Studio exibe uma lista das assinaturas associadas a essa conta.
Defina a assinatura padrão para todos os comandos da CLI do Azure executados nesta sessão.
az account set --subscription "Concierge Subscription"
Nota
Se você usou mais de uma área restrita recentemente, o terminal pode exibir mais de uma instância da Assinatura do Concierge. Nesse caso, use as próximas duas etapas para definir uma como a assinatura padrão. Se o comando anterior tiver sido bem-sucedido e apenas uma Assinatura do Concierge estiver listada, ignore as duas próximas etapas.
Obtenha os IDs da Subscrição de Assistente.
az account list \ --refresh \ --query "[?contains(name, 'Concierge Subscription')].id" \ --output table
Predefina a subscrição através do ID da subscrição. Substitua {o ID da subscrição} pelo ID da Subscrição da Assistente mais recente.
az account set --subscription {your subscription ID}
Definir o grupo de recursos predefinido
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 o padrão para o grupo de recursos criado para você no ambiente de área restrita.
az configure --defaults group="<rgn>[sandbox resource group name]</rgn>"
Para implantar esse modelo no Azure, entre em sua conta do Azure a partir do terminal do Visual Studio Code. Certifique-se de que instalou o Azure PowerShell e inicie sessão na mesma conta que ativou a sandbox.
No menu Terminal, selecione New Terminal (Novo Terminal). A janela do terminal geralmente abre na metade inferior da tela.
Se o shell mostrado no lado direito da janela do terminal for powershell ou pwsh, o shell correto estará aberto e você poderá pular para a próxima seção.
Se um shell diferente de powershell ou pwsh for exibido, selecione a seta suspensa do shell e selecione PowerShell.
Na lista de shells de terminal, selecione powershell ou pwsh.
No terminal, vá para o diretório onde você salvou seu modelo. Por exemplo, se você salvou seu modelo na pasta de modelos , poderá usar este comando:
Set-Location -Path templates
Iniciar sessão no Azure com o Azure PowerShell
No terminal de código do Visual Studio, execute o seguinte comando:
Connect-AzAccount
Um navegador é aberto para que você possa entrar em sua conta do Azure.
Depois de iniciar sessão no Azure, o terminal apresenta uma lista das subscrições associadas a esta conta.
Se você ativou a área restrita, uma assinatura chamada Assinatura do concierge será exibida. Use-o para o resto do exercício.
Defina a assinatura padrão para todos os comandos do Azure PowerShell executados nesta sessão.
$context = Get-AzSubscription -SubscriptionName 'Concierge Subscription' Set-AzContext $context
Nota
Se você usou mais de uma área restrita recentemente, o terminal pode exibir mais de uma instância da Assinatura do Concierge. Nesse caso, use as próximas duas etapas para definir uma como a assinatura padrão. Se o comando anterior tiver sido bem-sucedido e apenas uma Assinatura do Concierge estiver listada, ignore as duas próximas etapas.
Obtenha o ID de subscrição. A execução do comando a seguir lista suas assinaturas e suas IDs.
Concierge Subscription
Procure e, em seguida, copie o ID da segunda coluna. Parece algo comoaaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e
.Get-AzSubscription
Altere sua assinatura ativa para a Assinatura do Concierge. Certifique-se de que substitui {O seu ID de subscrição} pelo que copiou.
$context = Get-AzSubscription -SubscriptionId {Your subscription ID} Set-AzContext $context
Definir o grupo de recursos predefinido
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 para o grupo de recursos criado para você no ambiente de área restrita.
Set-AzDefault -ResourceGroupName <rgn>[sandbox resource group name]</rgn>
Para implementar este modelo no Azure, tem de iniciar sessão na sua conta do Azure a partir do terminal do Visual Studio Code. Certifique-se de que instalou a CLI do Azure e lembre-se de iniciar sessão com a mesma conta que utilizou para ativar a sandbox.
No menu Terminal, selecione New Terminal (Novo Terminal). A janela do terminal geralmente abre na metade inferior da tela.
Se o shell mostrado no lado direito da janela do terminal for bash, o shell correto estará aberto e você poderá pular para a próxima seção.
Se um shell diferente de bash for exibido, selecione a seta suspensa do shell e selecione Azure Cloud Shell (Bash).
Na lista de shells de terminal, selecione bash.
No terminal, vá para o diretório onde você salvou seu modelo. Por exemplo, se você salvou seu modelo na pasta de modelos , poderá usar este comando:
cd templates
Iniciar sessão no Azure
No terminal do Visual Studio Code, entre no Azure executando o seguinte comando:
az login
No browser que se abre, inicie sessão na sua conta do Azure.
O terminal de código do Visual Studio exibe uma lista das assinaturas associadas a essa conta.
Defina a assinatura padrão para todos os comandos da CLI do Azure executados nesta sessão.
az account set --subscription "Concierge Subscription"
Nota
Se você usou mais de uma área restrita recentemente, o terminal pode exibir mais de uma instância da Assinatura do Concierge. Nesse caso, use as próximas duas etapas para definir uma como a assinatura padrão. Se o comando anterior tiver sido bem-sucedido e apenas uma Assinatura do Concierge estiver listada, ignore as duas próximas etapas.
Obtenha os IDs da Subscrição de Assistente.
az account list \ --refresh \ --query "[?contains(name, 'Concierge Subscription')].id" \ --output table
Predefina a subscrição através do ID da subscrição. Substitua {o ID da subscrição} pelo ID da Subscrição da Assistente mais recente.
az account set --subscription {your subscription ID}
Definir o grupo de recursos predefinido
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 o padrão para 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 implementar o modelo, execute New-AzResourceGroupDeployment
.
New-AzResourceGroupDeployment -TemplateFile main.bicep
O texto Em execução aparece no terminal. A implantação leva um ou dois minutos para ser concluída.
Implantar o modelo usando o Azure PowerShell
Para implementar o modelo, execute New-AzResourceGroupDeployment
.
New-AzResourceGroupDeployment -TemplateFile azuredeploy.json
O texto Em execução aparece no terminal. A implantação leva um ou dois minutos para ser concluída.
Implementar o modelo com a CLI do Azure
Para implementar o modelo, execute az deployment group create
.
az deployment group create --template-file main.bicep
A implantação leva um ou dois minutos para ser concluída.
Implementar o modelo com a CLI do Azure
Para implementar o modelo, execute az deployment group create
.
az deployment group create --template-file azuredeploy.json
A implantação leva um ou dois minutos para ser concluída.
Verificar a implementação
Para validar se a sua implementação foi criada e enviada para o Azure, aceda ao portal do Azure e certifique-se de que está na subscrição da área restrita:
Selecione o seu avatar no canto superior da página.
Selecione Trocar diretório. Na lista, selecione o diretório Sandbox do Microsoft Learn.
Selecione Grupos de recursos.
Selecione
[nome do grupo de recursos do sandbox] .Na Descrição geral, vê a implementação realizada com êxito.
Selecione 1 efetuada com êxito para ver os detalhes da implementação.
Selecione a implantação principal para ver quais recursos foram implantados. Neste caso, foi implementada uma rede virtual (espaço de endereços 10.0.0.0/16) com duas sub-redes.
Deixe a página aberta em seu 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 nomeada
Owner
e seu valor. Depois de terminar, atags
propriedade da rede virtual deve ter esta aparência:"tags": { "CostCenter": "12345" },
Atualize o
addressPrefixes
para alterar/16
para/15
. Depois de terminar, aaddressSpace
propriedade da rede virtual deve ter esta aparência:"addressSpace": { "addressPrefixes": [ "10.0.0.0/15" ] },
Exclua a sub-rede chamada
subnet001
. Certifique-se de excluir todo o objeto de sub-rede. Depois de terminar, asubnets
propriedade da rede virtual deve ter esta aparência:"subnets": [ { "name": "subnet002", "properties": { "addressPrefix": "10.0.1.0/24" } } ]
Guarde o modelo.
No arquivo main.bicep no Visual Studio Code, exclua a marca nomeada
Owner
e seu valor. Depois de terminar, atags
propriedade da rede virtual deve ter esta aparência:tags: { 'CostCenter': '12345' }
Atualize o
addressPrefixes
para alterar o/16
para/15
. Depois de terminar, aaddressSpace
propriedade da rede virtual deve ter esta aparência:addressSpace: { addressPrefixes: [ '10.0.0.0/15' ] }
Exclua a sub-rede chamada
subnet001
. Certifique-se de excluir todo o objeto de sub-rede. Depois de terminar, asubnets
propriedade da rede virtual deve ter esta aparência:subnets: [ { name: 'subnet002' properties: { addressPrefix: '10.0.1.0/24' } } ]
Guarde o modelo.
Execute o comando what-if com o modelo modificado
Execute New-AzResourceGroupDeployment
com o sinalizador -WhatIf
para executar a operação what-if.
New-AzResourceGroupDeployment `
-WhatIf `
-TemplateFile main.bicep
Execute New-AzResourceGroupDeployment
com o sinalizador -WhatIf
para executar a operação what-if.
New-AzResourceGroupDeployment `
-WhatIf `
-TemplateFile azuredeploy.json
Execute az deployment group what-if
para executar a operação hipotética:
az deployment group what-if \
--template-file main.bicep
Execute az deployment group what-if
para executar a operação hipotética:
az deployment group what-if \
--template-file azuredeploy.json
A saída hipotética é semelhante à seguinte:
Observe que o resultado é codificado por cores, além de ter um prefixo:
- Roxo e ~ para modificações
- Verde e + para novos recursos a criar
- Laranja e - para eliminações
Remover os recursos no modelo
Atualize o arquivo azuredeploy.json no Visual Studio Code e remova todo o conteúdo da
resources
matriz. Quando terminar, 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": [ ] }
Guarde 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.
Guarde o modelo.
Implementar com o modo completo e a opção de confirmação
Nos próximos passos, irá implementar um modelo vazio através do seu ambiente existente.
Aviso
A realização deste procedimento em casos reais remove tudo o que tiver na cloud. O código seguinte é uma experimentação intelectualmente interessante, mas tenha cuidado ao utilizar este modo. No mínimo, utilize o sinalizador -Confirm
para que possa parar esta operação se não gostar das alterações propostas.
Aviso
A realização deste procedimento em casos reais remove tudo o que tiver na cloud. O código seguinte é uma experimentação intelectualmente interessante, mas tenha cuidado ao utilizar este modo. No mínimo, utilize o sinalizador --confirm-with-what-if
para que possa parar esta 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 ` -Mode Complete ` -Confirm ` -TemplateFile main.bicep
Sua saída será semelhante à seguinte:
Repare que a última linha do resultado é uma confirmação, na qual se pede que selecione y ou n para avançar.
Para [A] Sim para Todos, digite A para executar a implantação e limpar seu ambiente.
Execute
New-AzResourceGroupDeployment
com o sinalizador-Mode Complete
para executar a implantação no modo completo:New-AzResourceGroupDeployment ` -Mode Complete ` -Confirm ` -TemplateFile azuredeploy.json
Sua saída será semelhante à seguinte:
Repare que a última linha do resultado é uma confirmação, na qual se pede que selecione y ou n para avançar.
Para [A] Sim para Todos, digite A para executar a implantação e limpar seu ambiente.
Execute
az deployment group create
com o sinalizador--mode Complete
para criar uma implementação no modo completo:az deployment group create \ --mode Complete \ --confirm-with-what-if \ --template-file main.bicep
Sua saída será semelhante à seguinte:
Repare que a última linha do resultado é uma confirmação, na qual se pede que selecione y ou n para avançar.
Digite y (para "yes") para executar a implantação e limpar seu ambiente.
Execute
az deployment group create
com o sinalizador--mode Complete
para criar uma implementação no modo completo:az deployment group create \ --mode Complete \ --confirm-with-what-if \ --template-file azuredeploy.json
Sua saída será semelhante à seguinte:
Repare que a última linha do resultado é uma confirmação, na qual se pede que selecione y ou n para avançar.
Digite y (para "yes") para executar a implantação e limpar seu ambiente.
Verificar a implementaçã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: