Overzicht van de Terraform AzAPI-provider
De AzAPI-provider is een dunne laag boven op de Azure ARM REST API's. Hiermee kunt u elk Azure-resourcetype beheren met behulp van een API-versie, zodat u de nieuwste functionaliteit binnen Azure kunt gebruiken. AzAPI is een eersteklas provider die is ontworpen om zelfstandig of in combinatie met de AzureRM-provider te worden gebruikt.
Resources
Om u in staat te stellen alle Azure-resources en -functies te beheren zonder dat er updates nodig zijn, bevat de AzAPI-provider de volgende algemene resources:
Resourcenaam | Beschrijving |
---|---|
azapi_resource | Wordt gebruikt voor het volledig beheren van elke Azure-resource (besturingsvlak) (API) met volledige CRUD. Voorbeeldgebruiksvoorbeelden: Nieuwe preview-service Nieuwe functie toegevoegd aan bestaande service Bestaande functie/service die momenteel niet wordt gedekt |
azapi_update_resource | Wordt gebruikt voor het beheren van resources of delen van resources die geen volledige CRUD hebben Voorbeeldgebruiksvoorbeelden: Nieuwe eigenschappen voor een bestaande service bijwerken Vooraf gemaakte onderliggende resource bijwerken, zoals DNS SOA-record. |
azapi_resource_action | Wordt gebruikt om één bewerking uit te voeren op een resource zonder de levenscyclus ervan te beheren Voorbeeldgebruiksvoorbeelden: Een virtuele machine afsluiten Een geheim toevoegen aan een Sleutelkluis |
azapi_data_plane_resource | Wordt gebruikt voor het beheren van een specifieke subset van Azure-gegevensvlak-resources Voorbeeldgebruiksvoorbeelden: KeyVault-certificaatcontactpersonen Synapse-werkruimtebibliotheken |
Gebruikshiërarchie
Over het algemeen moet het gebruik de volgende stappen volgen:
- Het wordt altijd aanbevolen om te beginnen met het uitvoeren van zoveel mogelijk bewerkingen binnen
azapi_resource
. - Als het resourcetype niet bestaat
azapi_resource
binnen, maar wel onder een van de typen valt die worden ondersteund doorazapi_data_plane_resource
, gebruikt u dat in plaats daarvan. - Als de resource al bestaat in AzureRM of een eigenschap heeft die niet kan worden geopend
azapi_resource
, gebruiktazapi_update_resource
u deze specifieke eigenschappen. Resources dieazapi_resource
niet kunnen worden bijgewerkt via deze resource ofazapi_data_plane_resource
die niet worden ondersteund. - Als u een actie probeert uit te voeren die niet is gebaseerd op een azure CRUD-vriendelijke resource, is dit
azapi_resource_action
minder eenvoudig danazapi_update_resource
maar flexibeler.
Voorbeelden van resourceconfiguratie
Met het volgende codefragment wordt een resource geconfigureerd die momenteel niet bestaat in de AzureRM-provider:
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"
}
}
}
Met het volgende codefragment wordt een preview-eigenschap geconfigureerd voor een bestaande resource vanuit 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
}
}
}
Met het volgende codefragment wordt een resourceactie geconfigureerd voor een bestaande AzureRM-resource:
resource "azapi_resource_action" "vm_shutdown" {
type = "Microsoft.Compute/virtualMachines@2023-07-01"
resource_id = azurerm_linux_virtual_machine.example.id
action = "powerOff”
}
Met het volgende codefragment wordt een resource geconfigureerd die momenteel niet bestaat in de AzureRM-provider omdat dit is ingericht op het gegevensvlak:
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"
}
}
}
}
}
Verificatie met behulp van de AzAPI-provider
De AzAPI-provider maakt dezelfde verificatiemethoden mogelijk als de AzureRM-provider. Zie Terraform verifiëren bij Azure voor meer informatie over verificatieopties.
Voordelen van het gebruik van de AzAPI-provider
De AzAPI-provider biedt de volgende voordelen:
- Ondersteunt alle Azure-besturingsvlakservices:
- Preview-services en -functies
- Alle API-versies
- Volledige kwaliteit van Terraform-statusbestand
- Eigenschappen en waarden worden opgeslagen in status
- Geen afhankelijkheid van Swagger
- Algemene en consistente Azure-verificatie
- Robuuste VS Code-extensie
Ervaring en levenscyclus van de AzAPI-provider
In deze sectie worden enkele hulpprogramma's beschreven waarmee u de AzAPI-provider kunt gebruiken.
VS Code-extensie en taalserver
De AzAPI VS Code-extensie biedt een uitgebreide ontwerpervaring met de volgende voordelen:
- Geef alle beschikbare resourcetypen en API-versies weer.
- Automatisch aanvullen van de toegestane eigenschappen en waarden voor elke resource.
- Hints weergeven bij het aanwijzen van een eigenschap.
- Syntaxisvalidatie
- Automatisch aanvullen met codevoorbeelden.
AzAPI2AzureRM-migratiehulpprogramma
De AzureRM-provider biedt de meest geïntegreerde Terraform-ervaring voor het beheren van Azure-resources. Daarom is het aanbevolen gebruik van de AzAPI- en AzureRM-providers als volgt:
- Gebruik de AzAPI-provider terwijl de service of functie in preview is.
- zodra de service officieel is uitgebracht, gebruikt u de AzureRM-provider.
Het hulpprogramma AzAPI2AzureRM is ontworpen om te migreren van de AzAPI-provider naar de AzureRM-provider.
AzAPI2AzureRM is een opensource-hulpprogramma waarmee het proces van het converteren van AzAPI-resources naar AzureRM-resources wordt geautomatiseerd.
AzAPI2AzureRM heeft twee modi: plannen en migreren:
- In het plan worden de AzAPI-resources weergegeven die kunnen worden gemigreerd.
- Migreren migreert de AzAPI-resources naar AzureRM-resources in zowel de HCL-bestanden als de status.
AzAPI2AzureRM zorgt er na de migratie voor dat uw Terraform-configuratie en -status zijn afgestemd op uw werkelijke status. U kunt de update naar de status valideren door uit te voeren terraform plan
nadat de migratie is voltooid om te zien dat er niets is gewijzigd.
De AzAPI-provider gebruiken
Voeg de AzAPI-provider toe aan uw Terraform-configuratie.
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 = "..." }
Declareer een of meer AzAPI-resources, zoals wordt weergegeven in de volgende voorbeeldcode:
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" } } }) }