O que são modelos ARM?
Com a mudança para a nuvem, muitas equipes adotaram métodos ágeis de desenvolvimento. 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 enfrentar esses desafios, automatize implantações e use a prática da infraestrutura como código. No código, você define a infraestrutura que precisa ser implantada. O código de infraestrutura faz parte do seu projeto. Assim como o código do aplicativo, armazene o código da infraestrutura em um repositório de origem e faça a versão dele. 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. Você também pode especificar em qual grupo de recursos esses recursos serão implantados.
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?.
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. Por exemplo, o arquivo a seguir cria uma conta de armazenamento. Se você implantar esse modelo e a conta de armazenamento com as propriedades especificadas já existir, nenhuma alteração será feita.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]"
}
},
"resources": {
"mystore": {
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2023-04-01",
"name": "mystorageaccount",
"location": "[parameters('location')]",
"sku": {
"name": "Standard_LRS"
},
"kind": "StorageV2"
}
}
}
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.
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. Você pode incluir um script no modelo ou armazená-lo em uma fonte externa e fazer referência a ele no modelo. Com scripts de implantação, você pode concluir sua configuração de ambiente de ponta a ponta em um único modelo ARM.
Teste: Para garantir que seu modelo siga as diretrizes recomendadas, teste-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: use a operação hipotética para visualizar as alterações antes de implantar o modelo. Com hipóteses, você vê quais recursos criar, atualizar ou excluir e todas as propriedades de recursos a serem 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.
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 esquemas 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). Essa integração automatiza 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 usam as funções que o Gerenciador de Recursos fornece.
O modelo tem as seguintes seções:
Parâmetros - Forneça valores durante a implantação que você personaliza para ambientes diferentes ao usar o mesmo modelo.
Variáveis - Defina valores que você reutiliza em seus modelos. Você pode construí-los a partir de valores de parâmetro.
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"
},
]
Ele converte a definição para a seguinte operação de API REST, que envia 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 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 continua 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
Defina modelos e grupos de recursos com base em como você deseja gerenciar sua solução. Por exemplo, você pode implantar seu aplicativo de três camadas por meio de um único modelo em um único grupo de recursos.
Você não precisa definir toda a sua infraestrutura em um ú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 a seguir mostra como implantar uma solução de três camadas por meio de um modelo pai que inclui três modelos aninhados.
Se imaginar as suas camadas com ciclos de vida separados, pode implementar as três camadas em grupos de recursos separados. Os recursos ainda podem ser vinculados a recursos de outros grupos de recursos.
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, talvez você queira compartilhá-lo com outros usuários em sua organização. As especificações de modelo permitem armazenar um modelo como um tipo de recurso. Use 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.
Obter suporte
Aqui estão as etapas para abrir um tíquete de suporte para problemas relacionados ao modelo do Azure Resource Manager (ARM):
Abra o portal do Azure.
Selecione o ícone Suporte + Solução de problemas no canto superior direito.
Em Descreva brevemente o problema, insira o modelo ARM e selecione Ir.
Em Qual serviço você está tendo um problema?, selecione Portal em Monitoramento & Gerenciamento e, em seguida, selecione Avançar.
Selecione uma subscrição e, em seguida, selecione Seguinte.
Selecione Problema com modelos ARM e, em seguida, selecione Avançar.
Próximos passos
- Para obter um tutorial passo a passo que o orienta pelo processo de criação de um modelo, consulte Tutorial: Criar e implantar seu primeiro modelo ARM.
- Para saber mais sobre modelos ARM por meio de um conjunto guiado de módulos do Learn, consulte Implantar e gerenciar recursos no Azure usando modelos ARM.
- Para obter informações sobre as propriedades em arquivos de modelo, consulte Compreender a estrutura e a sintaxe dos modelos ARM.
- Para saber mais sobre como exportar modelos, consulte Guia de início rápido: criar e implantar modelos ARM usando o portal do Azure.
- Para obter respostas a perguntas comuns, consulte Perguntas frequentes sobre modelos ARM.