Exercício – Visualizar alterações com o comando what-if

Concluído

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.

  1. Abra o Visual Studio Code.

  2. Crie um arquivo chamado azuredeploy.json.

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

  4. 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": "2018-10-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. Salve o modelo.

  1. Abra o Visual Studio Code.

  2. Crie um arquivo chamado main.bicep.

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

  4. Copie o código a seguir para main.bicep.

    resource vnet 'Microsoft.Network/virtualNetworks@2018-10-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. 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.

  1. No menu Terminal, selecione Novo Terminal. A janela do terminal geralmente é aberta na metade inferior da tela.

  2. Se o shell mostrado no lado direito da janela do terminal for o powershell ou o pwsh, o shell correto será aberto e você poderá passar 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 aparecer um shell diferente do powershell ou pwsh, selecione a seta da lista de seleção do shell e escolha PowerShell.

    Captura de tela da janela do terminal do Visual Studio Code, com a lista suspensa do shell do terminal exibida 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á 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

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

  2. 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. Use-a no restante do exercício.

  3. Defina a assinatura padrão para todos os comandos do Azure PowerShell que você executar nesta sessão.

    $context = Get-AzSubscription -SubscriptionName 'Concierge Subscription'
    Set-AzContext $context
    

    Observação

    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. Se o comando anterior tiver sido bem-sucedido e apenas uma Assinatura do Concierge estiver listada, ignore as duas próximas etapas.

  4. 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 a cf49fbbc-217c-4eb6-9eb5-a6a6c68295a0.

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

  1. No menu Terminal, selecione Novo Terminal. A janela do terminal geralmente é aberta na metade inferior da tela.

  2. Se o shell mostrado no lado direito da janela do terminal for o bash, o shell correto será aberto e você poderá passar 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 o menu suspenso do shell do terminal mostrado e o Padrão Git Bash selecionado.

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

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

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

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

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

  3. Defina a assinatura padrão para todos os comandos da CLI do Azure que você executar nesta sessão.

    az account set --subscription "Concierge Subscription"
    

    Observação

    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. Se o comando anterior tiver sido bem-sucedido e apenas uma Assinatura do Concierge estiver listada, ignore as duas próximas etapas.

  4. Obtenha as IDs da Assinatura do Concierge.

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

  1. No menu Terminal, selecione Novo Terminal. A janela do terminal geralmente é aberta na metade inferior da tela.

  2. Se o shell mostrado no lado direito da janela do terminal for o powershell ou o pwsh, o shell correto será aberto e você poderá passar 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 aparecer um shell diferente do powershell ou pwsh, selecione a seta da lista de seleção do shell e escolha PowerShell.

    Captura de tela da janela do terminal do Visual Studio Code, com a lista suspensa do shell do terminal exibida 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á 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

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

  2. 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. Use-a no restante do exercício.

  3. Defina a assinatura padrão para todos os comandos do Azure PowerShell que você executar nesta sessão.

    $context = Get-AzSubscription -SubscriptionName 'Concierge Subscription'
    Set-AzContext $context
    

    Observação

    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. Se o comando anterior tiver sido bem-sucedido e apenas uma Assinatura do Concierge estiver listada, ignore as duas próximas etapas.

  4. 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 a cf49fbbc-217c-4eb6-9eb5-a6a6c68295a0.

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

  1. No menu Terminal, selecione Novo Terminal. A janela do terminal geralmente é aberta na metade inferior da tela.

  2. Se o shell mostrado no lado direito da janela do terminal for o bash, o shell correto será aberto e você poderá passar 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 o menu suspenso do shell do terminal mostrado e o Padrão Git Bash selecionado.

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

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

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

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

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

  3. Defina a assinatura padrão para todos os comandos da CLI do Azure que você executar nesta sessão.

    az account set --subscription "Concierge Subscription"
    

    Observação

    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. Se o comando anterior tiver sido bem-sucedido e apenas uma Assinatura do Concierge estiver listada, ignore as duas próximas etapas.

  4. Obtenha as IDs da Assinatura do Concierge.

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

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

  2. Selecione Mudar diretório. Na lista, selecione o diretório Área restrita do Microsoft Learn.

  3. Selecione Grupos de recursos.

  4. Selecione [nome do grupo de recursos de área restrita].

  5. Na Visão Geral, você verá que a implantação foi bem-sucedida.

  6. Selecione 1 Êxito para ver os detalhes da implantação.

    Captura de tela da interface do portal do Azure para as implantações com a implantação em questão listada e um status de êxito.

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

    Captura de tela da interface do portal do Azure para a implantação específica, sem nenhum recurso listado.

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

    Deixe a página aberta no 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 chamada Owner e o valor dela. Depois de terminar, a propriedade tags da rede virtual deverá ter esta aparência:

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

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

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

  1. No arquivo main.bicep no Visual Studio Code, exclua a marca chamada Owner e o valor dela. Depois de terminar, a propriedade tags da rede virtual deverá ter esta aparência:

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

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

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

Execute New-AzResourceGroupDeployment com o sinalizador -WhatIf para realizar a operação teste de hipóteses.

New-AzResourceGroupDeployment `
  -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:

Captura de tela da CLI do Azure mostrando a saída da operação de teste de hipóteses.

Captura de tela do Azure PowerShell mostrando a saída da operação de teste de hipóteses.

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

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

  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
    

    A saída será semelhante ao seguinte:

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

    Observe como a última linha da saída é uma confirmação. Ela solicita que você selecione s ou n para continuar.

  2. Em [A] Sim para todos, insira A para executar a implantação e limpar o 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
    

    A saída será semelhante ao seguinte:

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

    Observe como a última linha da saída é uma confirmação. Ela solicita que você selecione s ou n para continuar.

  2. Em [A] Sim para todos, insira A para executar a implantação e limpar o seu ambiente.

  1. Execute az deployment group create com o sinalizador --mode Complete para criar uma implantação no modo completo:

    az deployment group create \
      --mode Complete \
      --confirm-with-what-if \
      --template-file main.bicep
    

    A saída será semelhante ao seguinte:

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

    Observe como a última linha da saída é uma confirmação. Ela solicita que você selecione s ou n para continuar.

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

  1. Execute az deployment group create com o sinalizador --mode Complete para criar uma implantação no modo completo:

    az deployment group create \
      --mode Complete \
      --confirm-with-what-if \
      --template-file azuredeploy.json
    

    A saída será semelhante ao seguinte:

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

    Observe como a última linha da saída é uma confirmação. Ela solicita que você selecione s ou n para continuar.

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

Captura de tela da interface do portal do Azure da implantação completa com o recurso de rede virtual não mais listado.