Översikt över Terraform AzAPI-providern

AzAPI-providern är ett tunt lager ovanpå Azure ARM REST-API:erna. Med AzAPI-providern kan du hantera alla Azure-resurstyper med valfri API-version. Den här providern kompletterar AzureRM-providern genom att aktivera hantering av nya Azure-resurser och egenskaper (inklusive privat förhandsversion).

Resurser

För att du ska kunna hantera alla Azure-resurser och funktioner utan att kräva uppdateringar innehåller AzAPI-providern följande allmänna resurser:

Resursnamn beskrivning
azapi_resource Används för att fullständigt hantera alla Azure-resurser (kontrollplan) (API) med fullständig CRUD.
   Exempel på användningsfall:
      Ny förhandsversionstjänst
      Ny funktion har lagts till i befintlig tjänst
      Befintlig funktion/tjänst omfattas inte för närvarande
azapi_update_resource Används för att hantera resurser eller delar av resurser som inte har fullständig CRUD
   Exempel på användningsfall:
      Uppdatera nya egenskaper för en befintlig tjänst
      Uppdatera förskapad underordnad resurs – till exempel DNS SOA-post.

Exempel på resurskonfiguration

Följande kodfragment konfigurerar en resurs som för närvarande inte finns i AzureRM-providern:

resource "azapi_resource" "publicip" {
  type      = "Microsoft.Network/Customipprefixes@2021-03-01"
  name      = "exfullrange"
  parent_id = azurerm_resource_group.example.id
  location  = "westus2"

  body = jsonencode({
    properties = {
      cidr          = "10.0.0.0/24"
      signedMessage = "Sample Message for WAN"
    }
  })
}

Följande kodfragment konfigurerar en förhandsgranskningsegenskap för en befintlig resurs från AzureRM:

resource "azapi_update_resource" "test" {
  type        = "Microsoft.ContainerRegistry/registries@2020-11-01-preview"
  resource_id = azurerm_container_registry.acr.id

  body = jsonencode({
    properties = {
      anonymousPullEnabled = var.bool_anonymous_pull
    }
  })
}

Autentisering med AzAPI-providern

AzAPI-providern aktiverar samma autentiseringsmetoder som AzureRM-providern. Mer information om autentiseringsalternativ finns i Autentisera Terraform till Azure.

Fördelar med att använda AzAPI-providern

AzAPI-providern har följande fördelar:

  • Stöder alla Azure-tjänster:
    • Tjänster och funktioner för privat förhandsversion
    • Tjänster och funktioner för offentlig förhandsversion
    • Alla API-versioner
  • Fullständig Terraform-tillståndsfilåtergivning
    • Egenskaper och värden sparas i tillstånd
  • Inget beroende av Swagger
  • Vanlig och konsekvent Azure-autentisering

Erfarenhet och livscykel för AzAPI-providern

I det här avsnittet beskrivs några verktyg som hjälper dig att använda AzAPI-providern.

VS Code-tillägget och språkservern

Tillägget AzAPI VS Code ger en omfattande redigeringsupplevelse med följande fördelar:

  • Intellisense
  • Automatisk slutförande av kod
  • Tips
  • Syntaxverifiering
  • Snabbinformation

AzAPI2AzureRM-migreringsverktyg

AzureRM-providern ger den mest integrerade Terraform-upplevelsen för att hantera Azure-resurser. Därför är den rekommenderade användningen av AzAPI- och AzureRM-leverantörerna följande:

  1. När tjänsten eller funktionen är i förhandsversion använder du AzAPI-providern.
  2. När tjänsten har släppts officiellt använder du AzureRM-providern.

Verktyget AzAPI2AzureRM är utformat för att migrera från AzAPI-providern till AzureRM-providern.

AzAPI2AzureRM är ett verktyg med öppen källkod som automatiserar processen med att konvertera AzAPI-resurser till AzureRM-resurser.

AzAPI2AzureRM har två lägen: planera och migrera:

  • Planen visar de AzAPI-resurser som kan migreras.
  • Migrera migrerar AzAPI-resurserna till AzureRM-resurser i både HCL-filerna och tillståndet.

AzAPI2AzureRM säkerställer efter migreringen att din Terraform-konfiguration och ditt tillstånd är i linje med ditt faktiska tillstånd. Du kan verifiera att tillståndet har uppdaterats genom att köras terraform plan efter att migreringen har slutförts för att se att ingenting har ändrats.

Använda AzAPI-providern

  1. Installera VS Code-tillägget

  2. Lägg till AzAPI-providern i Terraform-konfigurationen.

    terraform {
      required_providers {
        azapi = {
          source  = "Azure/azapi"
        }
      }
    }
    
    provider "azapi" {
      # More information on the authentication methods supported by
      # the AzureRM Provider can be found here:
      # https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs
    
      # subscription_id = "..."
      # client_id       = "..."
      # client_secret   = "..."
      # tenant_id       = "..."
    }
    
  3. Deklarera en eller flera AzAPI-resurser enligt följande exempelkod:

    resource "azapi_resource" "example" {
      name = "example"
      parent_id = data.azurerm_machine_learning_workspace.existing.id
      type = "Microsoft.MachineLearningServices/workspaces/computes@2021-07-01"
    
      location = "eastus"
      body = jsonencode({
        properties = {
          computeType      = "ComputeInstance"
          disableLocalAuth = true
          properties = {
            vmSize = "STANDARD_NC6"
          }
        }
      })
    }
    
    

Nästa steg