Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Azure tem dois provedores oficiais do Terraform: AzureRM e AzAPI. Ambos os provedores gerenciam Azure recursos por meio do Terraform, mas usam abordagens diferentes. Entender essas diferenças ajuda você a escolher o provedor certo ou a combinação de provedores para seu projeto.
Visão geral de cada provedor
AzureRM é o provedor padrão para gerenciar recursos Azure com o Terraform. Ele fornece blocos de recursos coletados e tipados com validação integrada, comportamento consistente e ampla documentação da comunidade. No entanto, o AzureRM dá suporte apenas a um subconjunto de tipos de recursos do Azure e versões de API, e os novos recursos geralmente ficam para trás nos lançamentos do Azure.
AzAPI é uma camada fina sobre as APIs REST do Azure Resource Manager (ARM). Ele dá suporte a qualquer tipo de recurso Azure em qualquer versão da API, incluindo recursos de visualização e serviços ainda não compatíveis com o AzureRM. A AzAPI fornece acesso direto à API do ARM sem esperar por atualizações do provedor.
Quando usar o AzureRM
Use o AzureRM como seu provedor primário quando:
- Os recursos que você está gerenciando têm suporte total no AzureRM com versões de API estáveis.
- Você deseja esquemas de recursos curados com validação embutida e bom suporte a IDEs.
- Sua equipe valoriza recursos amplos da comunidade, exemplos e disponibilidade do módulo.
- Você está gerenciando serviços de Azure bem estabelecidos que não exigem acesso aos recursos de visualização.
O AzureRM é o padrão certo para a maioria das equipes que se baseiam em Azure. Comece com o AzureRM e complemente-o com a AzAPI somente quando necessário.
Quando usar a AzAPI
Use a AzAPI como seu provedor primário ou para complementar o AzureRM quando:
- Você precisa gerenciar os recursos do Azure que ainda não têm suporte no AzureRM.
- Você precisa usar uma versão específica da API, incluindo versões prévias, que o AzureRM não expõe.
- Você precisa de acesso às propriedades de recurso que o AzureRM não apresenta.
- Você deseja ter controle total sobre a versão da API por motivos de conformidade ou reprodutibilidade.
- Você está gerenciando recursos imediatamente após o lançamento do Azure, antes que o AzureRM adicione suporte.
Quando usar ambos os provedores juntos
O AzureRM e a AzAPI foram projetados para funcionar lado a lado. Um padrão comum é usar o AzureRM para a maior parte da sua infraestrutura ao usar a AzAPI para acesso direto à API do ARM, quando necessário:
- Use
azapi_update_resourcepara definir propriedades em recursos gerenciados pelo AzureRM que o AzureRM não expõe. - Use
azapi_resourcepara gerenciar um novo serviço ou recurso de visualização enquanto o restante da pilha usa o AzureRM. - Use
azapi_resource_actionpara executar operações em recursos gerenciados pelo AzureRM que não se ajustam a um ciclo de vida padrão de criação/leitura/atualização/exclusão.
# Manage the primary resource with AzureRM
resource "azurerm_kubernetes_cluster" "example" {
name = "my-aks"
location = azurerm_resource_group.example.location
resource_group_name = azurerm_resource_group.example.name
dns_prefix = "myaks"
default_node_pool {
name = "default"
node_count = 1
vm_size = "Standard_DS2_v2"
}
identity {
type = "SystemAssigned"
}
}
# Use AzAPI to set a property not exposed by AzureRM
resource "azapi_update_resource" "aks_preview_feature" {
type = "Microsoft.ContainerService/managedClusters@2024-02-01"
resource_id = azurerm_kubernetes_cluster.example.id
body = {
properties = {
networkProfile = {
networkDataplane = "cilium"
}
}
}
}
Escolhendo uma estratégia de longo prazo
AzureRM-primary: gerencie todos os recursos no AzureRM e use a AzAPI apenas como uma ponte temporária para recursos ainda não compatíveis. Migre recursos da AzAPI para o AzureRM à medida que o suporte fica disponível, usando a aztfmigrate ferramenta.
AzAPI-primary: gerencie todos os recursos por meio da AzAPI para controle de versão de API consistente e acesso antecipado a novos recursos. Essa abordagem requer mais configuração, mas fornece controle total sobre a versão da API de cada recurso.
A maioria das equipes deve começar com uma estratégia primária do AzureRM e adotar a AzAPI conforme necessário.
Comparação de funcionalidades
| Característica | AzureRM | AzAPI |
|---|---|---|
| Dá suporte a todos os tipos de recursos Azure | Não: subconjunto curado | Sim |
| Dá suporte a versões prévias da API | No | Sim |
| Esquemas de recursos coletados | Sim | No |
| Validação de propriedade interna | Sim | Parcial (via pré-voo) |
| Preenchimento automático no IDE para propriedades | Sim | Sim (com extensão do VS Code) |
| Exportação de resposta/filtragem JMESPath | No | Sim |
| Gerenciamento de recursos do plano de dados | Sim | Sim (tipos de recursos selecionados) |
| Funções do provedor para construção de ID | No | Sim (v2.0 e posterior) |
| Validação de pré-voo no tempo de planejamento | Sim (tipos de recursos selecionados) | Sim — Habilitar a validação de pré-vôo |