Ö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:
- Vi rekommenderar alltid att du börjar med att utföra så många åtgärder som möjligt inom
azapi_resource
. - Om resurstypen inte finns inom
azapi_resource
men hamnar under någon av de typer som stöds avazapi_data_plane_resource
använder du den i stället. - Om resursen redan finns i AzureRM eller har en egenskap som inte kan nås inom
azapi_resource
använder duazapi_update_resource
för att komma åt dessa specifika egenskaper. Resurser somazapi_resource
ellerazapi_data_plane_resource
inte stöder kan inte uppdateras via den här resursen. - 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 änazapi_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.
- Automatisk slutförande av tillåtna egenskaper och värden för alla resurser.
- Visa tips när du hovrar över en egenskap.
- Syntaxverifiering
- 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:
- När tjänsten eller funktionen är i förhandsversion använder du AzAPI-providern.
- 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
Installera VS Code-tillägget
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 = "..." }
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" } } } }