Converter e migrar seus recursos para um arquivo Bicep

Concluído

Quando você começa o processo de migração para o Bicep, é importante seguir um processo estruturado para garantir que seu arquivo Bicep descreva corretamente seus recursos do Azure. Você precisa ter certeza de que seu código Bicep segue as práticas recomendadas e que ele é totalmente testado e seguro de usar para implantações subsequentes. Nesta unidade, você aprende sobre as duas primeiras fases da migração do Bíceps: a fase de conversão e a fase de migração.

Diagram that shows the convert and migrate phases of the recommended workflow for migrating Azure resources to Bicep.

O foco principal dessas duas fases é preparar um novo arquivo Bicep antes de refatorá-lo e testá-lo posteriormente.

Fase de conversão

O objetivo da fase de conversão da migração de seus recursos para o Bicep é capturar uma representação inicial de seus recursos do Azure. O arquivo Bicep criado nesta fase não está completo e não está pronto para ser usado. No entanto, o arquivo fornece um ponto de partida para sua migração.

A fase de conversão consiste em duas etapas possíveis, que você conclui em sequência:

  1. Capture uma representação dos seus recursos do Azure.
  2. Se necessário, converta a representação JSON em Bicep usando o decompile comando.

Diagram that shows a JSON template decompiled to JSON, and Azure resources that are exported to a JSON template, which is then decompiled.

Se você tiver um modelo JSON existente que está convertendo para Bicep, a primeira etapa é fácil porque você já tem seu modelo de origem. Você aprenderá como descompilá-lo para Bicep nesta unidade.

Se você estiver convertendo recursos do Azure que foram implantados usando o portal do Azure ou outra ferramenta, precisará capturar as definições de recursos. Você pode exportar as definições de recurso e convertê-las em Bicep ou pode usar o comando Inserir Recurso no Visual Studio Code para inserir uma representação Bicep do seu recurso do Azure.

Como o Azure representa os recursos

O Azure Resource Manager é o serviço usado para implantar e gerenciar recursos no Azure. Todos os recursos implantados no Azure são rastreados pelo Gerenciador de Recursos, independentemente do método usado para implantar o recurso. Você pode usar o portal do Azure, a CLI do Azure, o Azure PowerShell, a API REST do Gerenciador de Recursos e os SDKs do Azure para interagir com o Gerenciador de Recursos.

Diagram that shows Resource Manager accepting requests from all Azure clients and libraries.

Há dois tipos de operações no Azure: operações de plano de controle e operações de plano de dados. As operações do plano de controle são usadas para gerenciar os recursos em sua assinatura. As operações do plano de dados são usadas para acessar recursos expostos por um recurso. Por exemplo, você usa uma operação de plano de controle para criar uma máquina virtual, mas usa uma operação de plano de dados para se conectar à máquina virtual usando o protocolo RDP (Remote Desktop Protocol).

Exportar recursos existentes para um modelo JSON

Independentemente de como seus recursos do Azure são criados, o Gerenciador de Recursos disponibiliza informações sobre cada recurso no formato JSON. Quando você solicita uma cópia da representação JSON de um recurso, você está exportando o recurso. O arquivo JSON que você exporta pode ser descompilado no Bicep.

O Resource Manager fornece várias maneiras de exportar recursos do Azure para um modelo. Você pode usar o portal do Azure, a CLI do Azure e os cmdlets do Azure PowerShell para exportar recursos únicos, vários recursos e grupos de recursos inteiros.

O processo de exportação é uma operação de plano de controle, o que significa que exporta apenas a configuração dos recursos do Azure. Por exemplo, quando você exporta uma máquina virtual, os dados no disco rígido da máquina virtual não são exportados. E quando você exporta uma conta de armazenamento, os blobs e outros conteúdos da conta de armazenamento não são incluídos no processo de exportação.

Você precisa considerar algumas coisas ao exportar recursos existentes:

  • A definição de recurso exportado é um instantâneo do estado atual desse recurso. Ele inclui todas as alterações feitas no recurso desde sua implantação inicial.
  • O modelo exportado pode incluir algumas propriedades de recurso padrão que normalmente são omitidas de uma definição de Bicep. Por exemplo, o processo de exportação pode adicionar propriedades somente leitura que o Azure define automaticamente. Não faz sentido incluir essas propriedades porque elas são somente leitura. Considere remover essas propriedades das definições de recursos ao migrar para o Bicep para manter seus arquivos Bicep livres de código desnecessário que possa causar confusão.
  • O modelo exportado provavelmente não incluirá todos os parâmetros necessários para torná-lo reutilizável. Quando você exporta um modelo, muitas das propriedades serão codificadas no modelo. Você verá como adicionar parâmetros mais adiante neste módulo.
  • Alguns recursos não podem ser exportados usando essa abordagem, e você precisa defini-los manualmente no arquivo Bicep. Você aprenderá como recriar esses recursos mais tarde nesta unidade.

Salvar implantações em um modelo JSON

Se você já implantou um recurso manualmente a partir do portal do Azure, deve ter notado a opção de Baixar um modelo para automação na guia Revisar + criar . Essa opção salva um modelo JSON ARM baseado nos nomes e propriedades definidos durante a criação do recurso no portal.

O Resource Manager também rastreia implantações de recursos. As operações de implantação incluem alterações enviadas pela experiência de criação de recursos do portal do Azure e quaisquer implantações de modelo ARM. As alterações em recursos existentes feitas usando o portal do Azure, cmdlets do Azure PowerShell, CLI do Azure ou outras ferramentas geralmente não criam implantações.

Se as implantações foram criadas usando uma ferramenta compatível, você pode acessar o modelo de implantação a partir do histórico de implantação do grupo de recursos. Você pode usar o portal do Azure, a CLI do Azure ou o Azure PowerShell para salvar implantações.

Você precisa considerar algumas coisas ao salvar seus modelos usando este método:

  • O modelo salvo mostra o estado dos recursos no momento da implantação. Ele não inclui quaisquer alterações que foram feitas após a implantação.
  • Se a implantação contiver vários recursos, não será possível selecionar recursos específicos para incluir e excluir. Esta operação baixa a definição de todos os recursos que faziam parte da implantação inicial. No entanto, ao passar para a fase de migração do processo, você pode ignorar manualmente os recursos de que não precisa.
  • O modelo inclui apenas propriedades de recursos que são necessárias para a implantação.
  • O modelo pode incluir parâmetros que você pode usar para reimplantar o modelo em vários ambientes. No entanto, você precisa confirmar se esses parâmetros atendem às suas necessidades.
  • O modelo provavelmente não inclui propriedades estranhas, mas você ainda deve verificar se o modelo inclui tudo o que você espera e remover quaisquer propriedades desnecessárias.

Nota

No entanto, você exporta recursos, exportando recursos existentes ou salvando implantações, trata o arquivo exportado como um ponto de partida e não o usa diretamente. Em vez disso, use-o como um ponto de partida para seu modelo final.

Inserir recursos existentes no Bicep

A extensão Bicep para Visual Studio Code inclui o comando Inserir Recurso , que captura uma representação Bicep de um recurso do Azure. Este comando lê a definição JSON do recurso do Azure, remove propriedades que são reconhecidas como somente leitura e descompila o JSON para Bicep. Tal como acontece com a função de exportação, o código Bicep resultante pode ser usado como um ponto de partida para o seu arquivo Bicep final.

Você pode inserir um recurso abrindo a paleta de comandos Código do Visual Studio. Use Ctrl+Shift+P no Windows e Linux e ⌘+Shift+P no macOS.

Descompilar o modelo JSON ARM de origem

A segunda etapa na migração de seus recursos do Azure para o Bicep é converter seus modelos JSON ARM e recursos do Azure em modelos Bicep. As ferramentas do Bíceps incluem o decompile comando para converter modelos. Você pode invocar o decompile comando da CLI do Azure ou da CLI do Bicep.

O processo de descompilação não garante um mapeamento completo de JSON para Bicep. Talvez seja necessário revisar o arquivo Bicep gerado para atender às práticas recomendadas do modelo antes de usar o arquivo para implantar recursos. Considere-o o ponto de partida para a sua migração. Mais adiante neste módulo, você aprenderá como corrigir quaisquer problemas que encontrar durante o processo de descompilação.

Depois de descompilar o modelo, você concluiu a fase de conversão. Agora você tem um arquivo Bicep válido para começar.

Fase de migração

O objetivo da fase de migração de seus recursos para o Bicep é criar o primeiro rascunho do arquivo Bicep implantável e garantir que ele defina todos os recursos do Azure que estão no escopo para a migração .

A fase de migração consiste em três etapas, que você conclui em sequência:

  1. Crie um novo arquivo Bicep vazio.
  2. Copie cada recurso do seu modelo descompilado.
  3. Identifique e recrie quaisquer recursos em falta.

Diagram that shows the steps for migrating a template to Bicep.

Criar um novo arquivo Bicep

É uma boa prática criar um novo arquivo Bicep. O arquivo que você criou na fase de conversão é um ponto de referência para você examinar, mas você não deve tratá-lo como final ou implantá-lo como está.

Copiar recursos para o novo arquivo Bicep

Copie cada recurso individualmente do arquivo Bicep convertido para o novo arquivo Bicep. Esse processo ajuda você a resolver quaisquer problemas por recurso e evitar qualquer confusão à medida que seu modelo fica maior.

Recriar recursos sem suporte

Nem todos os tipos de recursos do Azure podem ser exportados por meio do portal do Azure, da CLI do Azure ou do Azure PowerShell. Por exemplo, extensões de máquina virtual como DependencyAgentWindows e MMAExtension (Microsoft Monitoring Agent) são tipos de recursos que você não pode exportar.

Quando você tenta exportar um recurso usando o portal do Azure, a CLI do Azure ou o Azure PowerShell e um tipo de recurso sem suporte é incluído, uma mensagem de erro detalhada é gerada. Você precisa recriar qualquer recurso que não tenha sido exportado, como extensões de máquina virtual, em seu novo arquivo Bicep. Você pode escolher entre várias ferramentas e abordagens para recriar recursos, incluindo o Gerenciador de Recursos do Azure, a referência de modelo ARM e os Modelos de Início Rápido do Azure.

Explorador de Recursos do Azure

O Azure Resource Explorer é uma ferramenta incorporada no portal do Azure. O portal não mostra determinados tipos de recursos, mas o Explorador de Recursos fornece uma representação JSON dos seus recursos. Para aceder ao Explorador de Recursos, pesquise-o na caixa de pesquisa:

Screenshot of the Azure portal that shows the search box with resource explorer entered.

O painel de resultados mostra uma lista dos fornecedores de recursos registados para a sua subscrição e detalhes de todos os recursos, grupos de recursos e subscrições que tem permissão para visualizar. Para exibir uma representação JSON de um recurso, selecione a hierarquia no lado esquerdo do painel:

Screenshot of the Azure portal that shows Azure Resource Explorer.

Ao selecionar um recurso, você pode exibir a representação JSON, como este exemplo:

{
    "name": "DependencyAgentWindows",
    "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/rg-app-prod-truckline/providers/Microsoft.Compute/virtualMachines/vm-prod-001/extensions/DependencyAgentWindows",
    "type": "Microsoft.Compute/virtualMachines/extensions",
    "location": "eastus",
    "properties": {
        "autoUpgradeMinorVersion": true,
        "provisioningState": "Succeeded",
        "publisher": "Microsoft.Azure.Monitoring.DependencyAgent",
        "type": "DependencyAgentWindows",
        "typeHandlerVersion": "9.10"
    }
}

Você pode usar a representação JSON para definir um recurso Bicep:

resource dependencyAgentWindows 'Microsoft.Compute/virtualMachines/extensions@2022-08-01' = {
  parent: virtualMachine
  name: 'DependencyAgentWindows'
  location: 'eastus'
  properties: {
    autoUpgradeMinorVersion: true
    publisher: 'Microsoft.Azure.Monitoring.DependencyAgent'
    type: 'DependencyAgentWindows'
    typeHandlerVersion: '9.10'
  }
}

Nota

A representação JSON inclui uma propriedade chamada provisioningState. A provisioningState propriedade é somente leitura e é definida automaticamente pelo Azure, portanto, não está incluída na definição de recurso do Bicep.

Gorjeta

A extensão Bicep para Visual Studio Code ajuda você a definir seus recursos do Azure no Bicep. Por exemplo, a representação Bicep do recurso inclui uma versão da API, mas a versão JSON exportada não. No Visual Studio Code, quando você começa a inserir o tipo de recurso, uma versão da API é sugerida automaticamente.

Referência do modelo do Resource Manager

A referência de modelo ARM é uma fonte de informações sobre a estrutura do modelo ARM, tipos de recursos, versões de API e definições de propriedade para recursos do Azure. A documentação fornece exemplos nos formatos Bicep e JSON.

Você pode escolher provedores de recursos específicos e tipos de recursos, como Microsoft.Web/serverfarms, e suas versões de API. Você pode revisar quais propriedades de recurso são necessárias e quais são opcionais. Você também pode visualizar descrições de propriedades que ajudam a entender o que elas fazem.

Modelos de Início Rápido do Azure

O repositório de Modelos de Início Rápido do Azure é uma coleção de modelos contribuídos pela comunidade. Este repositório de modelos pesquisáveis fornece exemplos de muitos recursos e soluções do Azure. Em alguns inícios rápidos, um modelo JSON ARM e um modelo Bicep ARM estão disponíveis para visualização. Você pode usar esses modelos como um ponto de referência para ajudá-lo a criar e verificar seus modelos para implantação.

Suponha que você queira encontrar um modelo que crie um plano e aplicativo do Serviço de Aplicativo do Azure. Cada modelo de início rápido oferece a opção de implantar o modelo diretamente no Azure ou exibir o modelo no GitHub.

Screenshot that shows an Azure Quickstart Template that deploys a basic Linux web app.

Lembre-se de que os Modelos de Início Rápido do Azure são contribuições da comunidade. Alguns dos exemplos podem estar desatualizados porque os recursos são adicionados regularmente aos serviços do Azure. Os exemplos também podem incluir recursos e propriedades que você não precisa para usar o modelo. No entanto, o repositório de modelos de início rápido é um recurso útil para ajudá-lo a entender como você pode implantar seus recursos usando modelos ARM.