Share via


O que são modelos ARM?

Com a mudança para a nuvem, muitas equipes adotaram métodos de desenvolvimento ágeis. Estas equipas têm de iterar processos rapidamente. Precisam de implementar repetidamente as suas soluções na cloud e de saber que o estado das respetivas infraestruturas se mantém fiá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 responder a estes desafios, pode automatizar implementações e utilizar 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 da infraestrutura em um repositório de origem e o versiona. Qualquer pessoa da sua equipe pode executar o código e implantar ambientes semelhantes.

Para implementar a infraestrutura como código nas soluções do Azure, utilize modelos do Azure Resource Manager (modelos do ARM). O modelo é um ficheiro JavaScript Object Notation (JSON) que define a infraestrutura e a configuração do projeto. O modelo utiliza a sintaxe declarativa, que permite afirmar o que quer implementar sem ter de escrever a sequência de comandos de programação para a criar. No modelo, você especifica os recursos a serem implantados e as propriedades desses recursos.

Gorjeta

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

Para saber como você pode começar a usar modelos ARM, veja o vídeo a seguir.

Por que escolher modelos 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 declarativamente. Por exemplo, você pode implantar não apenas máquinas virtuais, mas também a infraestrutura de rede, sistemas de armazenamento e quaisquer outros recursos necessários.

  • Resultados repetíveis: implante repetidamente sua infraestrutura durante todo o ciclo de vida de desenvolvimento e tenha confiança de que seus recursos serão implantados de maneira 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 represente 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 de 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 que mostra a diferença entre implantação imperativa e declarativa.

  • Arquivos modulares: você pode dividir seus modelos em componentes menores e reutilizáveis e vinculá-los no momento da implantação. Você também pode aninhar um modelo dentro de 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 introduzir novos recursos, você poderá implantá-los por meio de modelos. Você não precisa esperar que as ferramentas ou módulos sejam atualizados antes de usar os novos serviços.

  • Extensibilidade: com scripts de implantação, você pode adicionar scripts 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 completa do ambiente em um único modelo ARM.

  • Teste: você pode certificar-se de que seu modelo segue as diretrizes recomendadas testando-o com o kit de ferramentas de modelo ARM (arm-ttk). 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 hipotética para obter uma visualização das alterações antes de implantar o modelo. Com hipóteses, você vê quais recursos serão criados, atualizados ou excluídos e todas as propriedades de recursos que serão alteradas. A operação hipotética verifica o estado atual do seu ambiente e elimina a necessidade de gerenciar o estado.

  • Validação interna: seu modelo é implantado somente após passar na validação. O Resource Manager verifica o modelo antes de iniciar a implantação para garantir que ela seja bem-sucedida. É menos provável que sua implantação pare em um estado semiconcluído.

  • Implantações controladas: no portal do Azure, você pode revisar o histórico de implantação e obter informações sobre a implantação do modelo. Você pode ver o modelo que foi implantado, os valores de parâmetro passados e quaisquer valores de saída. Outras infraestruturas como serviços de código não são rastreadas através do portal.

    Captura de ecrã do portal do Azure a mostrar o histórico de implementação.

  • Política como código: a Política do Azure é 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íticas será feita em recursos não compatíveis quando implantados por meio de modelos.

  • Planos de implantação: você pode aproveitar os planos fornecidos pela Microsoft para atender aos padrões regulatórios e de conformidade. Esses planos incluem modelos pré-construídos para várias arquiteturas.

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

  • Código exportável: você pode obter um modelo para um grupo de recursos existente exportando o estado atual do grupo de recursos ou exibindo o modelo usado para uma implantação específica. Visualizar o modelo exportado é uma forma útil de saber mais sobre a sintaxe do modelo.

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

Arquivo de modelo

Dentro do seu modelo, você pode escrever expressões de modelo que estendem os recursos do JSON. Essas expressões fazem uso das funções fornecidas pelo Gerenciador de Recursos.

O modelo tem as seguintes seções:

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

  • Variáveis - Defina valores que são reutilizados em seus modelos. Eles podem ser construídos a partir de valores de parâmetros.

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

  • Recursos - Especifique os recursos a serem implantados.

  • Saídas - Retorna valores dos recursos implantados.

Processo de implantação do modelo

Quando implementa um modelo, o Resource Manager converte o modelo em operações da API REST. Por exemplo, quando o Resource Manager recebe um modelo com a seguinte definição de recursos:

"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 operação de API REST seguinte, a qual é enviada para o fornecedor 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 a apiVersion definida no modelo para o recurso é usada como a versão da API para a operação REST. Você pode implantar repetidamente o modelo e ter confiança de que ele continuará a funcionar. Ao usar a mesma versão da API, você não precisa se preocupar em quebrar as alterações que podem ser introduzidas em versões posteriores.

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

Design de modelo

A forma como define modelos e grupos de recursos é inteiramente da sua responsabilidade, bem como pretende gerir a sua solução. Por exemplo, pode implementar a sua aplicação de três camadas através de um único modelo para um grupo de recursos.

Diagrama que mostra uma implantação de aplicativo de três camadas usando um único modelo.

No entanto, não precisa de definir toda a infraestrutura num único modelo. Muitas vezes, faz sentido dividir os requisitos de implementação num conjunto de modelos direcionados e com uma finalidade específica. Pode reutilizar facilmente estes modelos para soluções diferentes. Para implantar uma solução específica, crie um modelo principal que vincule todos os modelos necessários. A imagem seguinte mostra como implementar uma solução de três camadas através de um modelo principal que inclui três modelos aninhados.

Diagrama que mostra uma implantação de aplicativo de três camadas usando modelos aninhados.

Se imaginar as suas camadas com ciclos de vida separados, pode implementar as três camadas em grupos de recursos separados. Repare que os recursos ainda podem ser ligados a recursos noutros grupos de recursos.

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

Para obter mais informações sobre modelos aninhados, veja Utilizar modelos ligados com o Azure Resource Manager.

Modelos de compartilhamento

Depois de criar seu modelo, você pode querer compartilhá-lo com outros usuários em sua organização. As especificações de modelo permitem armazenar 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 alterá-lo.

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

Próximos passos