O que são modelos ARM?

Com a mudança para a nuvem, muitas equipes adotaram métodos de desenvolvimento ágeis. Essas equipes iteram rapidamente. Elas precisam implantar repetidamente suas soluções na nuvem e saber que sua infraestrutura está em um estado confiável. À medida que a infraestrutura se tornou parte do processo iterativo, a divisão entre operações e desenvolvimento desapareceu. As equipes precisam gerenciar a infraestrutura e o código do aplicativo por meio de um processo unificado.

Para atender a esses desafios, você pode automatizar implantações e usar a prática da infraestrutura como código. No código, você define a infraestrutura que precisa ser implantada. O código de infraestrutura torna-se parte do seu projeto. Assim como o código do aplicativo, você armazena o código de infraestrutura em um repositório de origem e controla a versão dele. Qualquer pessoa em sua equipe pode executar o código e implantar ambientes semelhantes.

Para implementar a infraestrutura como código para suas soluções do Azure, use modelos de Azure Resource Manager (modelos ARM). Um modelo é um arquivo JSON (JavaScript Object Notation) que define a infraestrutura e a configuração do projeto. O modelo usa a sintaxe declarativa, que permite declarar o que você pretende implantar sem precisar gravar a sequência de comandos de programação para criá-lo. No modelo, especifique os recursos a serem implantados e as propriedades deles.

Dica

Apresentamos um novo idioma chamado Bicep que oferece os mesmos recursos ARM modelos, mas com uma sintaxe mais fácil de usar. Cada arquivo Bicep é convertido automaticamente em um modelo ARM durante a implantação. Se você estiver considerando a infraestrutura como opções de código, recomendamos analisar o Bicep. Para obter mais informações, consulte O que é o Bicep?.

Para saber mais sobre como você pode começar a usar os modelos do ARM, consulte o vídeo a seguir.

Por que escolher modelos de ARM?

Se você estiver tentando decidir entre usar modelos ARM e uma das outras infraestruturas como serviços de código, considere as seguintes vantagens de usar modelos:

  • Sintaxe declarativa: Os modelos ARM permitem criar e implantar uma infraestrutura inteira do Azure de forma declarativa. Por exemplo, você pode implantar não apenas máquinas virtuais, mas também a infraestrutura de rede, os sistemas de armazenamento e quaisquer outros recursos que você precise.

  • Resultados repetidos: Implante repetidamente sua infraestrutura em todo seu ciclo de vida de desenvolvimento e com a confiança de que seus recursos são implantados em um estado consistente. Os modelos são idempotentes, o que significa que você pode implantar o mesmo modelo muitas vezes e obter os mesmos tipos de recursos no mesmo estado. Você pode desenvolver um modelo que representa o estado desejado, em vez de desenvolver muitos modelos separados para representar atualizações.

  • Orquestração: Você não precisa se preocupar com as complexidades das operações de ordenação. O Resource Manager orquestra a implantação dos recursos interdependentes para que eles sejam criados na ordem correta. Quando possível, o Resource Manager implanta recursos em paralelo para que suas implantações sejam concluídas mais rapidamente do que as implantações seriais. Você implanta o modelo por meio de um comando, em vez de vários comandos imperativos.

    Diagrama mostrando a diferença entre a implantação imperativa e a declarativa.

  • Arquivos modulares: Você pode dividir seus modelos em componentes menores e reutilizáveis e vinculá-los no momento da implantação. Também é possível aninhar um modelo em outro modelo.

  • Criar qualquer recurso do Azure: Você pode usar imediatamente novos serviços e recursos do Azure em modelos. Assim que um provedor de recursos apresenta novos recursos, você pode implantar esses recursos por meio de modelos. Você não precisa aguardar que as ferramentas ou os módulos sejam atualizados antes de usar os novos serviços.

  • Extensibilidade: Com scripts de implantação, você pode adicionar scripts do PowerShell ou Bash aos seus modelos. Os scripts de implantação estendem sua capacidade de configurar recursos durante a implantação. Um script pode ser incluído no modelo ou armazenado em uma fonte externa e referenciado no modelo. Os scripts de implantação oferecem a capacidade de concluir a configuração de seu ambiente de ponta a ponta em um único modelo ARM.

  • Teste: Você pode certificar-se de que seu modelo segue as diretrizes recomendadas testando-o com o arm-ttk (Kit de ferramentas de modelo do ARM). Este kit de teste é um script do PowerShell que você pode baixar do GitHub. O kit de ferramentas facilita o desenvolvimento de conhecimentos usando a linguagem de modelo.

  • Visualizar alterações: Você pode usar a operação de teste de hipóteses para obter uma visualização das alterações antes de implantar o modelo. Com o teste de hipóteses, você verá quais recursos serão criados, atualizados ou excluídos, e quaisquer propriedades de recurso que serão alteradas. A operação de teste de hipóteses verifica o estado atual do seu ambiente e elimina a necessidade de gerenciar o estado.

  • Validação interna: Seu modelo é implantado somente após a aprovação da validação. O Resource Manager verifica o modelo antes de iniciar a implantação para garantir que a implantação terá sucesso. Sua implantação é menos provável de parar em um estado de meia-conclusão.

  • Implantações rastreadas: No portal do Azure é possível examinar o histórico da implantação e obter informações sobre a implantação do modelo. Você pode ver o modelo implantado, os valores de parâmetro passados e todos os valores de saída. Outra infraestrutura como serviços de código não é rastreada por meio do Portal.

    Captura de tela do portal do Azure mostrando o histórico de implantação.

  • Política como código: Azure Policy é uma política como estrutura de código para automatizar a governança. Se você estiver usando políticas do Azure, a correção de política será feita em recursos sem conformidade quando implantada por meio de modelos.

  • Blueprints de implantação: Você pode aproveitar os Blueprints fornecidos pela Microsoft para atender aos padrões normativos e de conformidade. Esses blueprints incluem modelos predefinidos para várias arquiteturas.

  • Integração CI/CD: Você também pode integrar modelos em suas ferramentas de CI/CD (integração contínua e implantação contínua), que podem automatizar seus pipelines de lançamento para atualizações rápidas e confiáveis de aplicativos e de infraestrutura. Ao usar o Azure DevOps e a tarefa de modelo do Resource Manager, você pode usar Azure Pipelines para criar e implantar continuamente projetos de modelo do ARM. Para saber mais, veja Projeto do VS com pipelines e Tutorial: Integração contínua de modelos de Azure Resource Manager com Azure pipelines.

  • Código exportável: Você pode recuperar um modelo de um grupo de recursos existente exportando o estado atual do grupo de recursos ou exibindo o modelo usado para determinada implantação. A exibição do modelo exportado é uma maneira útil de saber mais sobre a sintaxe do modelo.

  • Ferramentas de criação: Você pode criar modelos com Visual Studio Code e a extensão de ferramenta de modelo. Você obtém IntelliSense, realce de sintaxe, ajuda online e muitas outras funções de linguagem. Além do Visual Studio Code, você também pode usar o Visual Studio.

Arquivo de modelo

Em seu modelo, você pode escrever expressões de modelo que estendam os recursos do JSON. Essas expressões fazem uso das funções fornecidas pelo Resource Manager.

O modelo inclui as seguintes seções:

  • Parâmetros – Fornece valores durante a implantação que permitem que o mesmo modelo seja usado com ambientes diferentes.

  • Variáveis – Define valores que são reutilizados em seus modelos. Eles podem ser construídos com base em valores de parâmetro.

  • Funções definidas pelo usuário – Criam funções personalizadas que simplificam seu modelo.

  • Recursos - Especifica os recursos a serem implantados.

  • Saídas – Retornam valores dos recursos implantados.

Processo de implantação de modelo

Quando você implanta um modelo, o Resource Manager converte o modelo em operações de API REST. Por exemplo, quando o Gerenciador de Recursos recebe um modelo com a seguinte definição de recurso:

"resources": [
  {
    "type": "Microsoft.Storage/storageAccounts",
    "apiVersion": "2022-09-01",
    "name": "mystorageaccount",
    "location": "centralus",
    "sku": {
      "name": "Standard_LRS"
    },
    "kind": "StorageV2"
  },
]

Converte a definição para a seguinte operação de API REST, que é enviada para o provedor de recursos Microsoft.Storage:

PUT
https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/mystorageaccount?api-version=2022-09-01
REQUEST BODY
{
  "location": "centralus",
  "sku": {
    "name": "Standard_LRS"
  },
  "kind": "StorageV2",
  "properties": {}
}

Observe que o apiVersion que você definiu no modelo para o recurso é usado como a versão de API para a operação REST. Você pode implantar o modelo repetidamente e ter confiança de que ele continuará a funcionar. Ao usar a mesma versão de API, você não precisa se preocupar com alterações significativas que podem ser introduzidas em versões posteriores.

Para implantar um modelo, use qualquer uma das seguintes opções:

Design do modelo

Como você define grupos de recursos e modelos é de sua responsabilidade e de como você deseja gerenciar a sua solução. Por exemplo, você pode implantar seu aplicativo de três camadas por meio de um único modelo para um único grupo de recursos.

Diagrama mostrando a implementação de um aplicativo de três camadas usando um único modelo.

Mas, você não precisa definir toda a sua infraestrutura em um único modelo. Muitas vezes, faz sentido dividir seus requisitos de implantação em um conjunto de modelos com destinação e fins específicos. Você pode reutilizar esses modelos facilmente para soluções diferentes. Para implantar uma solução específica, você cria um modelo mestre que vincule todos os modelos necessários. A imagem a seguir mostra como implantar uma solução de três camadas com o modelo pai que inclui três modelos aninhados.

Diagrama mostrando a implementação de um aplicativo de três camadas usando modelos aninhados.

Ao prever suas camadas com ciclos de vida separados, você pode implantar os três níveis para separar grupos de recursos. Observe que os recursos ainda podem ser vinculados aos recursos em outros grupos de recursos.

Diagrama mostrando uma implantação de aplicativo de três camadas com grupos de recursos separados.

Para obter informações sobre modelos aninhados, confira Usando modelos vinculados com o Azure Resource Manager.

Compartilhar modelos

Depois de criar seu modelo, talvez você queira compartilhá-lo com outros usuários em sua organização. As especificações de modelo permitem que você armazene um modelo como um tipo de recurso. Você usa o controle de acesso baseado em função para gerenciar o acesso à especificação do modelo. Os usuários com acesso de leitura à especificação do modelo podem implantá-lo, mas não alterar o modelo.

Essa abordagem significa que você pode compartilhar com segurança modelos que atendam aos padrões da sua organização.

Próximas etapas