Wählen Sie zwischen AzureRM- und AzAPI Terraform-Anbietern

Azure verfügt über zwei offizielle Terraform-Anbieter: AzureRM und AzAPI. Beide Anbieter verwalten Azure Ressourcen über Terraform, verwenden aber unterschiedliche Ansätze. Wenn Sie diese Unterschiede verstehen, können Sie für Ihr Projekt den richtigen Anbieter (oder eine Kombination aus Anbietern) auswählen.

Übersicht über jeden Anbieter

AzureRM ist der Standardanbieter für die Verwaltung Azure Ressourcen mit Terraform. Es bietet kuratierte, typierte Ressourcenblöcke mit integrierter Validierung, konsistentem Verhalten und umfassender Communitydokumentation. AzureRM unterstützt jedoch nur eine Teilmenge von Azure Ressourcentypen und API-Versionen, und neue Features liegen häufig hinter Azure Versionen zurück.

AzAPI ist eine dünne Schicht über den Azure Resource Manager (ARM) REST-APIs. Er unterstützt alle Azure Ressourcentyps in jeder API-Version, einschließlich Vorschaufeatures und -diensten, die in AzureRM noch nicht unterstützt werden. AzAPI ermöglicht Ihnen direkten Zugriff auf die ARM-API, ohne auf Anbieterupdates zu warten.

Wann man AzureRM verwenden sollte

Verwenden Sie AzureRM als primären Anbieter in folgenden Fällen:

  • Die von Ihnen verwalteten Ressourcen werden in AzureRM mit stabilen API-Versionen vollständig unterstützt.
  • Sie möchten kuratierte Ressourcenschemas mit integrierter Überprüfung und guter IDE-Unterstützung.
  • Ihr Team wertet breite Communityressourcen, Beispiele und Modulverfügbarkeit.
  • Sie verwalten bewährte Azure Dienste, die keinen Zugriff auf Vorschaufeatures erfordern.

AzureRM ist der richtige Standardwert für die meisten Teams, die auf Azure aufbauen. Beginnen Sie mit AzureRM, und ergänzen Sie es nur bei Bedarf mit AzAPI.

Wann man AzAPI verwenden sollte

Verwenden Sie AzAPI als primären Anbieter – oder um AzureRM zu ergänzen – wenn:

  • Sie müssen Azure Ressourcen verwalten, die in AzureRM noch nicht unterstützt werden.
  • Sie müssen eine bestimmte API-Version verwenden, einschließlich Vorschauversionen, die AzureRM nicht verfügbar macht.
  • Sie benötigen Zugriff auf Ressourceneigenschaften, die AzureRM nicht bereitstellt.
  • Sie möchten die vollständige Kontrolle über die API-Version aus Compliance- oder Reproduzierbarkeitsgründen.
  • Sie verwalten Ressourcen direkt nach der Veröffentlichung von Azure, bevor AzureRM Unterstützung hinzufügt.

Wann beide Anbieter zusammen verwendet werden sollen

AzureRM und AzAPI sind so konzipiert, dass sie nebeneinander funktionieren. Ein gängiges Muster ist die Verwendung von AzureRM für die meisten Ihrer Infrastruktur bei Verwendung von AzAPI für direkten ARM-API-Zugriff bei Bedarf:

  • Dient azapi_update_resource zum Festlegen von Eigenschaften für von AzureRM verwaltete Ressourcen, die von AzureRM nicht offengelegt werden.
  • Verwenden Sie azapi_resource, um einen neuen Dienst oder eine Vorschaufunktion zu verwalten, während der Rest Ihres Stacks AzureRM verwendet.
  • Verwenden Sie azapi_resource_action, um Vorgänge für von AzureRM verwaltete Ressourcen auszuführen, die nicht in einen standardmäßigen Lebenszyklus von Erstellen/Lesen/Aktualisieren/Löschen passen.
# 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"
      }
    }
  }
}

Auswählen einer langfristigen Strategie

AzureRM-primär: Verwalten Sie alle Ressourcen in AzureRM, und verwenden Sie AzAPI nur als temporäre Brücke für Features, die noch nicht unterstützt werden. Migrieren Sie AzAPI-Ressourcen zu AzureRM, sobald der Support verfügbar wird, indem Sie das aztfmigrate Tool verwenden.

AzAPI-primary: Verwalten Sie alle Ressourcen über AzAPI für eine konsistente API-Versionssteuerung und frühzeitigen Zugriff auf neue Features. Dieser Ansatz erfordert mehr Konfiguration, bietet Ihnen jedoch die vollständige Kontrolle über die API-Version jeder Ressource.

Die meisten Teams sollten mit einer AzureRM-primären Strategie beginnen und AzAPI bei Bedarf einführen.

Funktionsvergleich

Merkmal AzureRM AzAPI
Unterstützt alle Azure Ressourcentypen Nein – kuratierte Teilmenge Ja
Unterstützt Vorschau-API-Versionen No Ja
Kuratierte Ressourcenschemas Ja No
Integrierte Eigenschaftenüberprüfung Ja Teilweise (über Preflight)
Autovervollständigung der IDE für Eigenschaften Ja Ja (mit VS Code-Erweiterung)
Antwortexport / JMESPath-Filterung No Ja
Ressourcenverwaltung der Datenebene No Ja (ausgewählte Ressourcentypen)
Anbieterfunktionen für die ID-Konstruktion No Ja (v2.0 und höher)
Preflight-Validierung während der Planungsphase No Ja – Aktivieren der Preflight-Überprüfung

Nächste Schritte