Välj mellan AzureRM- och AzAPI Terraform-leverantörer

Azure har två officiella Terraform-leverantörer: AzureRM och AzAPI. Båda leverantörerna hanterar Azure resurser via Terraform, men de använder olika metoder. Att förstå dessa skillnader hjälper dig att välja rätt leverantör – eller kombination av leverantörer – för ditt projekt.

Översikt över varje leverantör

AzureRM är standardprovidern för att hantera Azure resurser med Terraform. Den innehåller utvalda, typerade resursblock med integrerad validering, konsekvent beteende och omfattande dokumentation om communityn. AzureRM stöder dock endast en delmängd av Azure resurstyper och API-versioner, och nya funktioner ligger ofta efter Azure versioner.

AzAPI är ett tunt lager ovanpå REST-API:erna för Azure Resource Manager (ARM). Den stöder alla Azure resurstyper i valfri API-version, inklusive förhandsversionsfunktioner och tjänster som ännu inte stöds i AzureRM. AzAPI ger dig direkt åtkomst till ARM-API:et utan att vänta på provideruppdateringar.

När du ska använda AzureRM

Använd AzureRM som primär provider när:

  • De resurser som du hanterar stöds fullt ut i AzureRM med stabila API-versioner.
  • Du vill ha utvalda resursscheman med inbyggd validering och bra IDE-stöd.
  • Ditt team värdesätter breda communityresurser, exempel och modultillgänglighet.
  • Du hanterar väletablerade Azure tjänster som inte kräver åtkomst till förhandsversionsfunktioner.

AzureRM är rätt standard för de flesta team som bygger på Azure. Börja med AzureRM och komplettera det endast med AzAPI när det behövs.

När du ska använda AzAPI

Använd AzAPI som primär provider – eller för att komplettera AzureRM – när:

  • Du måste hantera Azure resurser som ännu inte stöds i AzureRM.
  • Du måste använda en specifik API-version, inklusive förhandsversioner, som AzureRM inte exponerar.
  • Du behöver åtkomst till resursegenskaper som Inte visas i AzureRM.
  • Du vill ha fullständig kontroll över API-versionen av efterlevnads- eller reproducerbarhetsskäl.
  • Du hanterar resurser omedelbart efter Azure-releasen, före AzureRM lägger till support.

När du ska använda båda leverantörer tillsammans

AzureRM och AzAPI är utformade för att fungera sida vid sida. Ett vanligt mönster är att använda AzureRM för större delen av infrastrukturen när du använder AzAPI för direkt ARM API-åtkomst där det behövs:

  • Använd azapi_update_resource för att ange egenskaper för AzureRM-hanterade resurser som AzureRM inte exponerar.
  • Använd azapi_resource för att hantera en ny tjänst eller förhandsgranskningsfunktion medan resten av stacken använder AzureRM.
  • Använd azapi_resource_action för att utföra åtgärder på AzureRM-hanterade resurser som inte passar en standardlivscykel för skapa/läsa/uppdatera/ta bort.
# 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"
      }
    }
  }
}

Välja en långsiktig strategi

AzureRM-primary: Hantera alla resurser i AzureRM och använd endast AzAPI som en tillfällig brygga för funktioner som ännu inte stöds. Migrera AzAPI-resurser till AzureRM när supporten blir tillgänglig med hjälp av aztfmigrate verktyget.

AzAPI-primary: Hantera alla resurser via AzAPI för konsekvent API-versionskontroll och tidig åtkomst till nya funktioner. Den här metoden kräver mer konfiguration men ger dig fullständig kontroll över varje resurs API-version.

De flesta team bör börja med en AzureRM-primär strategi och anta AzAPI efter behov.

Jämförelse av funktioner

Funktion AzureRM AzAPI
Stöder alla Azure resurstyper Nej – kuraterad delmängd Yes
Stöder förhandsversioner av API No Yes
Kuraterade resursscheman Yes No
Inbyggd egenskapsverifiering Yes Partiell (via preflight)
IDE:s automatiska komplettering av egenskaper Yes Ja (med VS Code-tillägget)
Svarsexport/JMESPath-filtrering No Yes
Dataplanets resursförvaltning Yes Ja (valda resurstyper)
Providerfunktioner för ID-konstruktion No Ja (v2.0 och senare)
Validering före körning vid planeringsfasen Ja (valda resurstyper) Ja – Aktivera preflight-validering

Nästa steg