Přehled zprostředkovatele Terraform AzAPI

Zprostředkovatel AzAPI je dynamická vrstva nad rozhraními REST API Azure ARM. Umožňuje spravovat jakýkoli typ prostředku Azure pomocí libovolné verze rozhraní API, což vám umožní využívat nejnovější funkce v Rámci Azure. AzAPI je prvotřídní poskytovatel navržený tak, aby se používal samostatně nebo společně s poskytovatelem AzureRM.

Zdroje informací

Aby bylo možné spravovat všechny prostředky a funkce Azure bez nutnosti aktualizací, poskytovatel AzAPI obsahuje následující obecné prostředky:

Název prostředku Popis
azapi_resource Slouží k úplné správě jakéhokoli prostředku Azure (řídicí roviny) s úplným CRUD.
   Příklady případů použití:
      Nová služba Preview
      Nová funkce přidaná do existující služby
      Stávající funkce nebo služba, které nejsou aktuálně pokryté
azapi_update_resource Slouží ke správě prostředků nebo částí prostředků, které nemají úplné CRUD.
   Příklady případů použití:
      Aktualizace nových vlastností ve stávající službě
      Aktualizace předem vytvořeného podřízeného prostředku – například záznam DNS SOA
azapi_resource_action Slouží k provedení jedné operace s prostředkem bez správy životního cyklu prostředku.
   Příklady případů použití:
      Vypnutí virtuálního počítače
      Přidání tajného kódu do služby Key Vault
azapi_data_plane_resource Slouží ke správě konkrétní podmnožina prostředků roviny dat Azure.
   Příklady případů použití:
      Kontakty certifikátu služby KeyVault
      Knihovny pracovních prostorů Synapse

Hierarchie využití

Celkově by využití mělo postupovat takto:

  1. Vždy se doporučuje začít s prováděním co největšího počtu operací v rámci azapi_resource.
  2. Pokud typ prostředku neexistuje, azapi_resource ale spadá pod jeden z typů podporovaných azapi_data_plane_resource, použijte ho.
  3. Pokud prostředek již existuje v AzureRM nebo má vlastnost, ke které se nedá přistupovat, azapi_resourcepoužijte azapi_update_resource pro přístup k těmto konkrétním vlastnostem. Prostředky, které azapi_resource nebo azapi_data_plane_resource nepodporují, se nedají prostřednictvím tohoto prostředku aktualizovat.
  4. Pokud se pokoušíte provést akci, která není založená na prostředku azure CRUD, azapi_resource_action je méně jednoduchá než azapi_update_resource flexibilnější.

Příklady konfigurace prostředků

Následující fragment kódu konfiguruje prostředek, který aktuálně neexistuje ve zprostředkovateli AzureRM:

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"
    }
  }
}

Následující fragment kódu nakonfiguruje vlastnost Preview pro existující prostředek z 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
    }
  }
}

Následující fragment kódu konfiguruje akci prostředku u existujícího prostředku AzureRM:

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

Následující fragment kódu konfiguruje prostředek, který v zprostředkovateli AzureRM aktuálně neexistuje, protože je zřízený v rovině dat:

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"
        }
      }
    }
  }
}

Ověřování pomocí zprostředkovatele AzAPI

Zprostředkovatel AzAPI umožňuje stejné metody ověřování jako poskytovatel AzureRM. Další informace o možnostech ověřování najdete v tématu Ověřování Terraformu v Azure.

Výhody použití poskytovatele AzAPI

Poskytovatel AzAPI má následující výhody:

  • Podporuje všechny služby řídicí roviny Azure:
    • Služby a funkce ve verzi Preview
    • Všechny verze rozhraní API
  • Úplná věrnost souboru stavu Terraformu
    • Vlastnosti a hodnoty se ukládají do stavu.
  • Bez závislosti na Swaggeru
  • Běžné a konzistentní ověřování Azure
  • Robustní rozšíření VS Code

Zkušenosti a životní cyklus poskytovatele AzAPI

Tato část popisuje některé nástroje, které vám pomůžou používat poskytovatele AzAPI.

Rozšíření VS Code a jazykový server

Rozšíření AzAPI VS Code poskytuje bohaté prostředí pro vytváření obsahu s následujícími výhodami:

  • Zobrazí seznam všech dostupných typů prostředků a verzí rozhraní API. Výpis všech dostupných typů prostředků
  • Automatické dokončování povolených vlastností a hodnot pro libovolný prostředek Seznam povolených vlastností
  • Zobrazit rady při najetí myší na vlastnost Zobrazit nápovědu při najetí myší na vlastnost
  • Ověření syntaxe Ověření syntaxe
  • Automatické dokončování pomocí ukázek kódu Automatické dokončování s ukázkami kódu

Nástroj pro migraci AzAPI2AzureRM

Poskytovatel AzureRM poskytuje nejvíce integrované prostředí Terraformu pro správu prostředků Azure. Proto doporučené použití poskytovatelů AzAPI a AzureRM je následující:

  1. Zatímco je služba nebo funkce ve verzi Preview, použijte poskytovatele AzAPI.
  2. po oficiálním vydání služby použijte poskytovatele AzureRM.

Nástroj AzAPI2AzureRM je navržený tak, aby pomohl migrovat z poskytovatele AzAPI na poskytovatele AzureRM.

AzAPI2AzureRM je opensourcový nástroj, který automatizuje proces převodu prostředků AzAPI na prostředky AzureRM.

AzAPI2AzureRM má dva režimy: plánování a migrace:

  • Plán zobrazí prostředky AzAPI, které je možné migrovat.
  • Migruje prostředky AzAPI do prostředků AzureRM v souborech HCL i ve stavu.

AzAPI2AzureRM zajišťuje po migraci, že konfigurace a stav Terraformu odpovídají vašemu skutečnému stavu. Aktualizaci stavu můžete ověřit spuštěním terraform plan po dokončení migrace a zjistit, že se nic nezměnilo.

Použití poskytovatele AzAPI

  1. Instalace rozšíření VS Code

  2. Přidejte zprostředkovatele AzAPI do konfigurace Terraformu.

    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. Deklarujte jeden nebo více prostředků AzAPI, jak je znázorněno v následujícím ukázkovém kódu:

    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"
          }
        }
      }
    }
    
    

Další kroky