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:
- Vždy se doporučuje začít s prováděním co největšího počtu operací v rámci
azapi_resource
. - Pokud typ prostředku neexistuje,
azapi_resource
ale spadá pod jeden z typů podporovanýchazapi_data_plane_resource
, použijte ho. - Pokud prostředek již existuje v AzureRM nebo má vlastnost, ke které se nedá přistupovat,
azapi_resource
použijteazapi_update_resource
pro přístup k těmto konkrétním vlastnostem. Prostředky, kteréazapi_resource
neboazapi_data_plane_resource
nepodporují, se nedají prostřednictvím tohoto prostředku aktualizovat. - 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 = jsonencode{
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.
- Automatické dokončování povolených vlastností a hodnot pro libovolný prostředek
- Zobrazit rady při najetí myší na vlastnost
- Ověření syntaxe
- Automatické dokončování pomocí ukázek 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í:
- Zatímco je služba nebo funkce ve verzi Preview, použijte poskytovatele AzAPI.
- 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
Instalace rozšíření VS Code
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 = "..." }
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 = jsonencode({ properties = { computeType = "ComputeInstance" disableLocalAuth = true properties = { vmSize = "STANDARD_NC6" } } }) }