O que é o Azure Resource Manager?
Você passou algum tempo com sua equipe aprendendo os benefícios da infraestrutura como código e as diferentes abordagens disponíveis. Sua empresa está crescendo em um ritmo rápido, e sua equipe sabe que irá implantará um número significativo de recursos no Azure. Em equipe, vocês decidiram que a infraestrutura declarativa como código é a abordagem correta para o provisionamento de recursos. A equipe não deseja manter scripts que listam cada etapa de implantação. Antes de iniciar o processo de criação do seu primeiro modelo, você precisa entender como o Azure Resource Manager funciona. Investigar os tipos de modelos disponíveis para uso com o Azure ajudará você a determinar as próximas etapas em sua estratégia de infraestrutura como código.
Nesta unidade, você irá aprender sobre o Resource Manager e os dois tipos de modelos do Resource Manager.
Conceitos do Azure Resource Manager
O Azure Resource Manager é o serviço usado para implantar e gerenciar recursos no Azure. Você pode usar o Resource Manager para criar, atualizar e excluir recursos em sua assinatura do Azure. Você pode interagir com o Resource Manager usando muitas ferramentas, incluindo o portal do Azure. O Resource Manager também fornece uma série de outros recursos, como controle de acesso, auditoria e marcação, para ajudar a gerenciar seus recursos após a implantação.
Terminologia
Ao começar sua jornada de nuvem com o Resource Manager, é importante entender alguns termos e conceitos:
Recurso: Um item gerenciável disponível na plataforma do Azure. Redes virtuais, máquinas virtuais, contas de armazenamento, aplicativos Web e bancos de dados são exemplos de recursos.
Grupo de recursos: um contêiner lógico que armazena os recursos relacionados de uma solução do Azure. O grupo de recursos inclui os recursos que você deseja gerenciar como um grupo. A maioria dos recursos do Azure está contida em um grupo de recursos. Você decide quais recursos pertencem a um grupo de recursos com base no que faz mais sentido para sua solução.
Observação
Um pequeno número de recursos não está contido em grupos de recursos. Esses tipos de recursos são para fins específicos, como o gerenciamento de controle de acesso e a imposição de políticas. Você irá aprender mais sobre esses tipos de recursos em um módulo posterior.
Assinatura: um contêiner lógico e limite de cobrança para seus recursos e grupos de recursos. Cada recurso e grupo de recursos do Azure é associado a apenas uma assinatura.
Grupo de gerenciamento: um contêiner lógico que você usa para gerenciar mais de uma assinatura. Você pode definir uma hierarquia de grupos de gerenciamento, assinaturas, grupos de recursos e recursos para gerenciar com eficiência o acesso, as políticas e a conformidade por meio de herança.
Modelo do ARM (Azure Resource Manager): um arquivo de modelo que define um ou mais recursos para implantação em um grupo de recursos, assinatura, grupo de gerenciamento ou locatário. Você pode usar o modelo para implantar os recursos de forma consistente e reproduzível. Há dois tipos de arquivos de modelo do ARM: JSON e Bicep. Este módulo se concentra em Bicep.
Benefícios
O Resource Manager fornece muitos benefícios e funcionalidades relacionados ao provisionamento de recursos de infraestrutura como código:
- Você pode implantar, gerenciar e monitorar os recursos da sua solução como um grupo em vez de individualmente.
- Você pode reimplantar sua solução em todo seu ciclo de vida de desenvolvimento e com a confiança de que seus recursos serão implantados em um estado consistente.
- Você pode gerenciar sua infraestrutura por meio de modelos declarativos em vez de usar scripts.
- Você pode especificar as dependências dos recursos para garantir que eles sejam implantados na ordem correta.
Operações: painel de controle e plano de dados
Você pode executar dois tipos de operações no Azure: operações do painel de controle e operações do plano de dados. Use o painel de controle para gerenciar os recursos em sua assinatura. Use o plano de dados para acessar recursos que são 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.
Painel de controle
Quando você envia uma solicitação de qualquer uma das ferramentas, APIs ou SDKs (Kits de desenvolvimento de software) do Azure, o Resource Manager recebe, autentica e autoriza essa solicitação. Em seguida, ele envia a solicitação para o provedor de recursos do Azure, que executa a ação solicitada. Como todas as solicitações são manipuladas por meio da mesma API, você verá funcionalidades e resultados consistentes em todas as diferentes ferramentas disponíveis no Azure.
A imagem a seguir mostra a função que o Resource Manager desempenha no tratamento de solicitações do Azure:
Todas as solicitações de operação do painel de controle são enviadas para uma URL do Resource Manager. Por exemplo, a operação de criação ou atualização de máquinas virtuais é uma operação do painel de controle. Aqui está a URL de solicitação para essa operação:
PUT https://management.azure.com/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Compute/virtualMachines/{virtualMachineName}?api-version=2022-08-01
O painel de controle entende quais recursos precisam ser criados e quais já existem. O Resource Manager compreende a diferença entre essas solicitações e não cria recursos idênticos nem exclui recursos existentes, embora haja maneiras de substituir esse comportamento.
Plano de dados
Quando uma operação de plano de dados é iniciada, as solicitações são enviadas para um ponto de extremidade específico em sua assinatura do Azure. Por exemplo, a operação Detectar idioma nos serviços de IA do Azure é uma operação de plano de dados porque a URL da solicitação é:
POST https://eastus.api.cognitive.microsoft.com/text/analytics/v2.0/languages
Recursos do Resource Manager como controle de acesso e bloqueios nem sempre se aplicam às operações do plano de dados. Por exemplo, um usuário pode não ter permissões para gerenciar uma máquina virtual usando o painel de controle, mas o usuário pode entrar no sistema operacional.
O que são modelos ARM?
Os modelos do Azure Resource Manager são arquivos que definem a infraestrutura e a configuração de sua implantação. Ao criar um modelo do ARM, você assume uma abordagem declarativa para o provisionamento de recursos. Esses modelos descrevem cada recurso na implantação, mas não descrevem como implantar os recursos. Quando você envia um modelo ao Resource Manager para implantação, o painel de controle pode implantar os recursos definidos de maneira organizada e consistente. Na unidade anterior, você aprendeu sobre as diferenças entre código imperativo e código declarativo.
Por que usar modelos do ARM?
Há muitos benefícios em usar modelos do ARM, desenvolvidos com JSON ou Bicep, para o provisionamento de recursos.
Resultados repetíveis: os modelos do ARM são idempotentes, o que significa que você pode implantar repetidamente o mesmo modelo e obter o mesmo resultado. O modelo não duplica recursos.
Orquestração: quando uma implantação de modelo é enviada ao Resource Manager, os recursos no modelo são implantados em paralelo. Esse processo permite que as implantações terminem mais rapidamente. O Resource Manager orquestrará essas implantações na ordem correta se um recurso depender de outro.
Pré-visualização: a ferramenta what-if, disponível no PowerShell e na CLI do Azure, permite pré-visualizar as alterações em seu ambiente antes da implantação do modelo. Essa ferramenta detalha as criações, modificações e exclusões que são feitas pelo modelo.
Teste e validação: você pode usar ferramentas como o linter Bicep para verificar a qualidade de seus modelos antes da implantação. Modelos do ARM enviados ao Resource Manager são validados antes do processo de implantação. Essa validação alerta você sobre erros em seu modelo antes do provisionamento de recursos.
Modularidade: você pode dividir seus modelos em componentes menores e vinculá-los durante a implantação.
Integração de CI/CD: seus modelos do ARM podem ser integrados em várias ferramentas de CI/CD, como o Azure DevOps e o GitHub Actions. Você pode usar essas ferramentas para controlar a versão de modelos por meio de controle do código-fonte e pipelines de versão de build.
Extensibilidade: com os scripts de implantação, você pode executar scripts Bash ou PowerShell dentro de seus modelos do ARM. Esses scripts executam tarefas, como operações de plano de dados, durante a implantação. Com a extensibilidade, você pode usar um único modelo do ARM para implantar uma solução completa.
Modelos JSON e Bicep
Dois tipos de modelos do ARM estão disponíveis para uso hoje: modelos JSON e modelos Bicep. O JSON (JavaScript Object Notation) é um formato de arquivo padrão aberto que várias linguagens podem usar. O Bicep é uma nova linguagem específica de domínio que foi desenvolvida recentemente para a criação de modelos do ARM usando uma sintaxe mais fácil. Você pode usar qualquer formato de modelo para seus modelos do ARM e implantações de recursos.