Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Azure tem dois fornecedores oficiais de Terraform: AzureRM e AzAPI. Ambos os fornecedores gerem recursos do Azure através do Terraform, mas usam abordagens diferentes. Compreender estas diferenças ajuda-o a escolher o fornecedor certo — ou a combinação de fornecedores — para o seu projeto.
Visão geral de cada prestador
AzureRM é o fornecedor padrão para gerir recursos Azure com Terraform. Fornece blocos de recursos curados e tipados com validação integrada, comportamento consistente e documentação ampla da comunidade. No entanto, o AzureRM suporta apenas um subconjunto dos tipos de recursos do Azure e versões da API, e as novas funcionalidades frequentemente ficam atrás das versões do Azure.
AzAPI é uma camada fina sobre as APIs REST do Azure Resource Manager (ARM). Suporta qualquer tipo de recurso Azure em qualquer versão da API, incluindo funcionalidades de pré-visualização e serviços ainda não suportados no AzureRM. O AzAPI dá-lhe acesso direto à API ARM sem esperar por atualizações do fornecedor.
Quando usar o AzureRM
Use o AzureRM como seu fornecedor principal quando:
- Os recursos que gere são totalmente suportados no AzureRM com versões estáveis da API.
- Queres esquemas de recursos curados com validação incorporada e bom suporte ao IDE.
- A sua equipa valoriza recursos comunitários amplos, exemplos e disponibilidade de módulos.
- Está a gerir serviços Azure bem estabelecidos que não precisam de acesso a funcionalidades de pré-visualização.
O AzureRM é o padrão correto para a maior parte das equipas que constroem no Azure. Começa com o AzureRM e complementa com AzAPI apenas quando necessário.
Quando usar o AzAPI
Use o AzAPI como seu fornecedor principal — ou para complementar o AzureRM — quando:
- Precisas de gerir recursos do Azure que ainda não são suportados no AzureRM.
- Precisas de usar uma versão específica da API, incluindo versões de pré-visualização, que o AzureRM não expõe.
- Precisas de acesso a propriedades de recursos que o AzureRM não apresenta.
- Queres controlo total sobre a versão da API por razões de conformidade ou reprodutibilidade.
- Estás a gerir os recursos imediatamente após o lançamento do Azure, antes do AzureRM adicionar suporte.
Quando usar ambos os fornecedores em conjunto
O AzureRM e o AzAPI foram concebidos para funcionar lado a lado. Um padrão comum é usar AzureRM para a maior parte da sua infraestrutura, enquanto utiliza AzAPI para acesso direto à API ARM quando necessário:
- Use
azapi_update_resourcepara definir propriedades em recursos geridos pelo AzureRM que o AzureRM não expõe. - Utilize
azapi_resourcepara gerir um novo serviço ou recurso de pré-visualização enquanto o resto da sua pilha utiliza AzureRM. - Use
azapi_resource_actionpara realizar operações em recursos geridos pelo AzureRM que não se enquadram num ciclo de vida padrão de criar/ler/atualizar/eliminar.
# 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"
}
}
}
}
Escolher uma estratégia de longo prazo
AzureRM-primary: Gerir todos os recursos no AzureRM e usar o AzAPI apenas como ponte temporária para funcionalidades ainda não suportadas. Migre recursos AzAPI para AzureRM assim que o suporte estiver disponível, utilizando a aztfmigrate ferramenta.
AzAPI-primário: Gerir todos os recursos através do AzAPI para controlo consistente de versões da API e acesso antecipado a novas funcionalidades. Esta abordagem requer mais configuração, mas dá-lhe controlo total sobre a versão da API de cada recurso.
A maioria das equipas deve começar com uma estratégia AzureRM-primary e adotar o AzAPI conforme necessário.
Comparação de funcionalidades
| Feature | AzureRM | AzAPI |
|---|---|---|
| Suporta todos os tipos de recursos do Azure | Não—subconjunto curado | Yes |
| Suporta versões pré-visualizadas da API | No | Yes |
| Esquemas de recursos curados | Yes | No |
| Validação de propriedades incorporada | Yes | Parcial (via pré-voo) |
| IDE autocomplete para propriedades | Yes | Sim (com extensão do VS Code) |
| Exportação da resposta / Filtragem JMESPath | No | Yes |
| Gestão de recursos no plano de dados | Yes | Sim (tipos de recursos selecionados) |
| Funções de provedor para construção de ID | No | Sim (v2.0 e posteriores) |
| Validação antes do voo no momento de planeamento | Sim (tipos de recursos selecionados) | Sim — Ativar a validação pré-voo |