Dela via


Översikt över Terraform AzAPI-providern

AzAPI-providern är ett tunt lager ovanpå Azure ARM REST-API:erna. Det gör att du kan hantera alla Azure-resurstyper med valfri API-version, så att du kan använda de senaste funktionerna i Azure. AzAPI är en förstklassig leverantör som är utformad för att användas på egen hand eller tillsammans med AzureRM-providern.

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.
azapi_resource_action Används för att utföra en enda åtgärd på en resurs utan att hantera livscykeln för den
   Exempel på användningsfall:
      Stäng av en virtuell dator
      Lägga till en hemlighet i ett Key Vault
azapi_data_plane_resource Används för att hantera en specifik delmängd av Azure-dataplansresurser
   Exempel på användningsfall:
      KeyVault-certifikatkontakter
      Synapse-arbetsytebibliotek

Användningshierarki

Sammantaget bör användningen följa dessa steg:

  1. Vi rekommenderar alltid att du börjar med att utföra så många åtgärder som möjligt inom azapi_resource.
  2. Om resurstypen inte finns inom azapi_resource men hamnar under någon av de typer som stöds av azapi_data_plane_resourceanvänder du den i stället.
  3. Om resursen redan finns i AzureRM eller har en egenskap som inte kan nås inom azapi_resourceanvänder du azapi_update_resource för att komma åt dessa specifika egenskaper. Resurser som azapi_resource eller azapi_data_plane_resource inte stöder kan inte uppdateras via den här resursen.
  4. Om du försöker utföra en åtgärd som inte baseras på en Azure CRUD-vänlig resurs är azapi_resource_action det mindre enkelt än azapi_update_resource men mer flexibelt.

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 = {
    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 = {
    properties = {
      anonymousPullEnabled = var.bool_anonymous_pull
    }
  }
}

Följande kodfragment konfigurerar en resursåtgärd på en befintlig AzureRM-resurs:

resource "azapi_resource_action" "vm_shutdown" {
  type = "Microsoft.Compute/virtualMachines@2023-07-01"
  resource_id = azurerm_linux_virtual_machine.example.id
  action = "powerOff”
}

Följande kodfragment konfigurerar en resurs som för närvarande inte finns i AzureRM-providern på grund av att den etableras på dataplanet:

resource "azapi_data_plane_resource" "dataset" {
  type      = "Microsoft.Synapse/workspaces/datasets@2020-12-01"
  parent_id = trimprefix(data.azurerm_synapse_workspace.example.connectivity_endpoints.dev, "https://")
  name      = "example-dataset"
  body = {
    properties = {
      type = "AzureBlob",
      typeProperties = {
        folderPath = {
          value = "@dataset().MyFolderPath"
          type  = "Expression"
        }
        fileName = {
          value = "@dataset().MyFileName"
          type  = "Expression"
        }
        format = {
          type = "TextFormat"
        }
      }
      parameters = {
        MyFolderPath = {
          type = "String"
        }
        MyFileName = {
          type = "String"
        }
      }
    }
  }
}

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-kontrollplanstjänster:
    • Förhandsgranska tjänster och funktioner
    • 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
  • Robust VS Code-tillägg

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:

  • Visa en lista över alla tillgängliga resurstyper och API-versioner. Visa en lista över alla tillgängliga resurstyper
  • Automatisk slutförande av tillåtna egenskaper och värden för alla resurser. Lista tillåtna egenskaper
  • Visa tips när du hovrar över en egenskap. Visa tips när du hovrar över en egenskap
  • Syntaxverifiering Syntaxverifiering
  • Automatisk komplettering med kodexempel. Automatisk komplettering med kodexempel

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 uppdateringen till tillståndet genom att köra terraform plan efter att ha slutfört migreringen 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 = {
        properties = {
          computeType      = "ComputeInstance"
          disableLocalAuth = true
          properties = {
            vmSize = "STANDARD_NC6"
          }
        }
      }
    }
    
    

Nästa steg