Kiezen tussen AzureRM- en AzAPI Terraform-providers

Azure heeft twee officiële Terraform-providers: AzureRM en AzAPI. Beide providers beheren Azure resources via Terraform, maar ze gebruiken verschillende benaderingen. Als u deze verschillen begrijpt, kunt u de juiste provider (of combinatie van providers) kiezen voor uw project.

Overzicht van elke provider

AzureRM is de standaardprovider voor het beheren van Azure resources met Terraform. Het biedt gecureerde, getypte resourceblokken met geïntegreerde validatie, consistent gedrag en brede communitydocumentatie. AzureRM ondersteunt echter slechts een subset van Azure resourcetypen en API-versies, en nieuwe functies blijven vaak achter bij Azure releases.

AzAPI is een dunne laag boven op de REST API's van Azure Resource Manager (ARM). Het ondersteunt elk Azure resourcetype op elke API-versie, inclusief preview-functies en -services die nog niet worden ondersteund in AzureRM. AzAPI biedt u directe toegang tot de ARM-API zonder te wachten op providerupdates.

Wanneer gebruikt u AzureRM?

Gebruik AzureRM als uw primaire provider wanneer:

  • De resources die u beheert, worden volledig ondersteund in AzureRM met stabiele API-versies.
  • U wilt gecureerde resourceschema's met ingebouwde validatie en goede IDE-ondersteuning.
  • Uw team waardeert brede communitybronnen, voorbeelden en beschikbaarheid van modules.
  • U beheert gevestigde Azure services waarvoor geen toegang tot preview-functies is vereist.

AzureRM is de juiste standaardinstelling voor de meeste teams die bouwen op Azure. Begin met AzureRM en vul deze alleen aan met AzAPI wanneer dat nodig is.

Wanneer gebruikt u AzAPI?

Gebruik AzAPI als uw primaire provider, of als aanvulling op AzureRM, wanneer:

  • U moet Azure resources beheren die nog niet worden ondersteund in AzureRM.
  • U moet een specifieke API-versie, inclusief preview-versies, gebruiken die azureRM niet beschikbaar maakt.
  • U hebt toegang nodig tot resource-eigenschappen die niet worden weergegeven in AzureRM.
  • U wilt volledige controle over de API-versie om nalevings- of reproduceerbaarheidsredenen.
  • U beheert resources direct na Azure release, voordat AzureRM ondersteuning toevoegt.

Wanneer beide providers samen moeten worden gebruikt

AzureRM en AzAPI zijn ontworpen om naast elkaar te werken. Een veelvoorkomend patroon is het gebruik van AzureRM voor de meeste infrastructuur terwijl u AzAPI gebruikt voor directe ARM API-toegang, indien nodig:

  • Gebruik azapi_update_resource dit om eigenschappen in te stellen voor door AzureRM beheerde resources die niet beschikbaar zijn in AzureRM.
  • Gebruik azapi_resource deze functie om een nieuwe service of preview-functie te beheren terwijl de rest van uw stack Gebruikmaakt van AzureRM.
  • Hiermee azapi_resource_action kunt u bewerkingen uitvoeren op door AzureRM beheerde resources die niet voldoen aan een standaard levenscyclus voor maken/lezen/bijwerken/verwijderen.
# 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"
      }
    }
  }
}

Een langetermijnstrategie kiezen

AzureRM-primair: beheer alle resources in AzureRM en gebruik AzAPI alleen als tijdelijke brug voor functies die nog niet worden ondersteund. Migreer AzAPI-resources naar AzureRM zodra er ondersteuning beschikbaar is met behulp van het aztfmigrate hulpprogramma.

AzAPI-primary: beheer alle resources via AzAPI voor consistent API-versiebeheer en vroege toegang tot nieuwe functies. Deze benadering vereist meer configuratie, maar biedt u volledige controle over de API-versie van elke resource.

De meeste teams moeten beginnen met een primaire AzureRM-strategie en zo nodig AzAPI gebruiken.

Vergelijking van functies

Kenmerk AzureRM AzAPI
Ondersteunt alle Azure resourcetypen Nee, gecureerde subset Yes
Ondersteunt preview-API-versies No Yes
Samengestelde bronschema's Yes No
Validatie van ingebouwde eigenschappen Yes Gedeeltelijk (via voorbereidende fase)
IDE automatisch aanvullen voor eigenschappen Yes Ja (met VS Code-extensie)
Antwoordexport/JMESPath-filteren No Yes
Resourcebeheer voor datavlak Yes Ja (geselecteerde resourcetypen)
Providerfuncties voor id-constructie No Ja (v2.0 en hoger)
Preflight-validatie tijdens de planningsfase Ja (geselecteerde resourcetypen) Ja: preflight-validatie inschakelen

Volgende stappen