Exercício – Pré-visualizar alterações com o comando what-if

Concluído

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.

  1. Abra o Visual Studio Code.

  2. Crie um novo arquivo chamado azuredeploy.json.

  3. 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.

  4. 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"
                }
              }
            ]
          }
        }
      ]
    }
    
  5. Guarde o modelo.

  1. Abra o Visual Studio Code.

  2. Crie um novo arquivo chamado main.bicep.

  3. 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.

  4. 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'
            }
          }
        ]
      }
    }
    
  5. 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.

  1. No menu Terminal, selecione New Terminal (Novo Terminal). A janela do terminal geralmente abre na metade inferior da tela.

  2. 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.

    Captura de tela da janela do terminal do Visual Studio Code, com a opção pwsh exibida na lista suspensa do shell.

  3. Se um shell diferente de powershell ou pwsh for exibido, selecione a seta suspensa do shell e selecione PowerShell.

    Captura de tela da janela do terminal do Visual Studio Code, com a lista suspensa do shell do terminal mostrada e o PowerShell selecionado.

  4. Na lista de shells de terminal, selecione powershell ou pwsh.

    Captura de tela da janela do terminal do Visual Studio Code, com o terminal do PowerShell selecionado.

  5. 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

  1. 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.

  2. 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.

  3. 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.

  4. Obtenha o ID de subscrição. A execução do comando a seguir lista suas assinaturas e suas IDs. Concierge SubscriptionProcure e, em seguida, copie o ID da segunda coluna. Parece algo como aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e.

    Get-AzSubscription
    
  5. 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.

  1. No menu Terminal, selecione New Terminal (Novo Terminal). A janela do terminal geralmente abre na metade inferior da tela.

  2. 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.

    Captura de tela da janela do terminal do Visual Studio Code, com a opção bash mostrada.

  3. Se um shell diferente de bash for exibido, selecione a seta suspensa do shell e selecione Azure Cloud Shell (Bash).

    Captura de tela da janela do terminal do Visual Studio Code, com a lista suspensa do shell do terminal mostrada e Git Bash Default selecionado.

  4. Na lista de shells de terminal, selecione bash.

    Captura de tela da janela do terminal do Visual Studio Code, com o terminal bash selecionado.

  5. 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

  1. No terminal do Visual Studio Code, entre no Azure executando o seguinte comando:

    az login
    
  2. 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.

  3. 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.

  4. Obtenha os IDs da Subscrição de Assistente.

     az account list \
       --refresh \
       --query "[?contains(name, 'Concierge Subscription')].id" \
       --output table
    
  5. 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.

  1. No menu Terminal, selecione New Terminal (Novo Terminal). A janela do terminal geralmente abre na metade inferior da tela.

  2. 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.

    Captura de tela da janela do terminal do Visual Studio Code, com a opção pwsh exibida na lista suspensa do shell.

  3. Se um shell diferente de powershell ou pwsh for exibido, selecione a seta suspensa do shell e selecione PowerShell.

    Captura de tela da janela do terminal do Visual Studio Code, com a lista suspensa do shell do terminal mostrada e o PowerShell selecionado.

  4. Na lista de shells de terminal, selecione powershell ou pwsh.

    Captura de tela da janela do terminal do Visual Studio Code, com o terminal do PowerShell selecionado.

  5. 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

  1. 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.

  2. 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.

  3. 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.

  4. Obtenha o ID de subscrição. A execução do comando a seguir lista suas assinaturas e suas IDs. Concierge SubscriptionProcure e, em seguida, copie o ID da segunda coluna. Parece algo como aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e.

    Get-AzSubscription
    
  5. 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.

  1. No menu Terminal, selecione New Terminal (Novo Terminal). A janela do terminal geralmente abre na metade inferior da tela.

  2. 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.

    Captura de tela da janela do terminal do Visual Studio Code, com a opção bash mostrada.

  3. Se um shell diferente de bash for exibido, selecione a seta suspensa do shell e selecione Azure Cloud Shell (Bash).

    Captura de tela da janela do terminal do Visual Studio Code, com a lista suspensa do shell do terminal mostrada e Git Bash Default selecionado.

  4. Na lista de shells de terminal, selecione bash.

    Captura de tela da janela do terminal do Visual Studio Code, com o terminal bash selecionado.

  5. 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

  1. No terminal do Visual Studio Code, entre no Azure executando o seguinte comando:

    az login
    
  2. 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.

  3. 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.

  4. Obtenha os IDs da Subscrição de Assistente.

     az account list \
       --refresh \
       --query "[?contains(name, 'Concierge Subscription')].id" \
       --output table
    
  5. 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:

  1. Selecione o seu avatar no canto superior da página.

  2. Selecione Trocar diretório. Na lista, selecione o diretório Sandbox do Microsoft Learn.

  3. Selecione Grupos de recursos.

  4. Selecione [nome do grupo de recursos do sandbox].

  5. Na Descrição geral, vê a implementação realizada com êxito.

  6. Selecione 1 efetuada com êxito para ver os detalhes da implementação.

    Captura de tela da interface do portal do Azure para as implantações, com a implantação listada e um status bem-sucedido.

  7. 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.

    Captura de ecrã da interface do portal do Azure para a implementação específica, sem recursos listados.

    Captura de ecrã da interface do portal do Azure para a implementação específica, com um recurso de rede virtual listado.

    Deixe a página aberta em seu navegador para que você possa verificar as implantações novamente mais tarde.

Modificar o modelo

  1. No arquivo azuredeploy.json no Visual Studio Code, exclua a marca nomeada Owner e seu valor. Depois de terminar, a tags propriedade da rede virtual deve ter esta aparência:

    "tags": {
      "CostCenter": "12345"
    },
    
  2. Atualize o addressPrefixes para alterar /16 para /15. Depois de terminar, a addressSpace propriedade da rede virtual deve ter esta aparência:

    "addressSpace": {
      "addressPrefixes": [
        "10.0.0.0/15"
      ]
    },
    
  3. Exclua a sub-rede chamada subnet001. Certifique-se de excluir todo o objeto de sub-rede. Depois de terminar, a subnets propriedade da rede virtual deve ter esta aparência:

    "subnets": [
      {
        "name": "subnet002",
        "properties": {
          "addressPrefix": "10.0.1.0/24"
        }
      }
    ]
    
  4. Guarde o modelo.

  1. No arquivo main.bicep no Visual Studio Code, exclua a marca nomeada Owner e seu valor. Depois de terminar, a tags propriedade da rede virtual deve ter esta aparência:

    tags: {
      'CostCenter': '12345'
    }
    
  2. Atualize o addressPrefixes para alterar o /16 para /15. Depois de terminar, a addressSpace propriedade da rede virtual deve ter esta aparência:

    addressSpace: {
      addressPrefixes: [
        '10.0.0.0/15'
      ]
    }
    
  3. Exclua a sub-rede chamada subnet001. Certifique-se de excluir todo o objeto de sub-rede. Depois de terminar, a subnets propriedade da rede virtual deve ter esta aparência:

    subnets: [
      {
        name: 'subnet002'
        properties: {
          addressPrefix: '10.0.1.0/24'
        }
      }
    ]
    
  4. 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:

Captura de tela da CLI do Azure mostrando a saída da operação hipotética.

Captura de tela do Azure PowerShell mostrando a saída da operação hipotética.

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

  1. 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": [
      ]
    }
    
  2. Guarde o modelo.

  1. No arquivo main.bicep no Visual Studio Code, exclua todo o conteúdo do arquivo, mas não exclua o arquivo em si.

  2. 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.

  1. 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:

    Captura de tela do Azure PowerShell mostrando a saída da operação de confirmação de implantação.

    Repare que a última linha do resultado é uma confirmação, na qual se pede que selecione y ou n para avançar.

  2. Para [A] Sim para Todos, digite A para executar a implantação e limpar seu ambiente.

  1. 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:

    Captura de tela do Azure PowerShell mostrando a saída da operação de confirmação de implantação.

    Repare que a última linha do resultado é uma confirmação, na qual se pede que selecione y ou n para avançar.

  2. Para [A] Sim para Todos, digite A para executar a implantação e limpar seu ambiente.

  1. 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:

    Captura de tela da CLI do Azure mostrando a saída da operação de confirmação de implantação.

    Repare que a última linha do resultado é uma confirmação, na qual se pede que selecione y ou n para avançar.

  2. Digite y (para "yes") para executar a implantação e limpar seu ambiente.

  1. 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:

    Captura de tela da CLI do Azure mostrando a saída da operação de confirmação de implantação.

    Repare que a última linha do resultado é uma confirmação, na qual se pede que selecione y ou n para avançar.

  2. 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:

Captura de ecrã da interface do portal do Azure para a implementação completa, com o recurso de rede virtual já não listado.