Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Terraform maakt de definitie, preview en implementatie van de cloudinfrastructuur mogelijk. Met Terraform maakt u configuratiebestanden met behulp van HCL-syntaxis. Met de HCL-syntaxis kunt u de cloudprovider opgeven, zoals Azure, en de elementen waaruit uw cloudinfrastructuur bestaat. Nadat u uw configuratiebestanden hebt gemaakt, maakt u een uitvoeringsplan waarmee u een voorbeeld van uw infrastructuurwijzigingen kunt bekijken voordat ze worden geïmplementeerd. Zodra u de wijzigingen hebt gecontroleerd, past u het uitvoeringsplan toe om de infrastructuur te implementeren.
De AzAPI Terraform-provider bevat ingebouwde preflight-validatie waarmee uw Azure resourceconfiguratie wordt gevalideerd op basis van het ARM-API-schema tijdens terraform plan, voordat resources in Azure worden gemaakt of gewijzigd. Preflight onderschept configuratiefouten vroegtijdig, zoals ongeldige adresvoorvoegsels, niet-ondersteunde eigenschappencombinaties of quotumschendingen, zonder de kosten van een mislukte implementatie.
Preflight-validatie is een van de vooraanstaande onderscheidende kenmerken van AzAPI en werkt naadloos samen met de direct-to-ARM-API-architectuur van de provider. U kunt ook preflight uitvoeren vanuit de extensie Microsoft Terraform VS Code zonder de providervlag rechtstreeks in te stellen.
Prerequisites
- Azure-abonnement: als u nog geen abonnement op Azure hebt, maakt u een gratis Azure-account aan voordat u begint.
Terraform configureren: Als u dit nog niet hebt gedaan, configureert u Terraform met een van de volgende opties:
Wanneer u zich aanmeldt bij Azure Portal met een Microsoft-account, wordt het standaard Azure-abonnement voor dat account gebruikt.
Terraform verifieert automatisch met behulp van gegevens uit het standaard Azure-abonnement.
Voer az account show uit om het huidige Microsoft-account en het Azure-abonnement te verifiëren.
az account show
Alle wijzigingen die u via Terraform aanbrengt, bevinden zich in het weergegeven Azure-abonnement. Als u dat wilt, slaat u de rest van dit artikel over.
Preflight-validatie inschakelen
Instellen enable_preflight = true in het provider "azapi" blok:
provider "azapi" {
enable_preflight = true
}
Preflight is standaard uitgeschakeld om compatibiliteit met eerdere versies te behouden. Schakel deze in in omgevingen waar u vroegtijdige validatie wilt, zoals CI-pijplijnen en controles van pull-aanvragen.
Voorbeeld: Een ongeldig adresvoorvoegsel vinden tijdens het plannen
Met de volgende configuratie maakt u een virtueel netwerk met een ongeldig CIDR-blok (Classless Inter-Domain Routing). Als preflight is ingeschakeld, komt de fout naar voren tijdens terraform plan in plaats van tijdens terraform apply:
terraform {
required_providers {
azapi = {
source = "Azure/azapi"
version = "~> 2.0"
}
azurerm = {
source = "hashicorp/azurerm"
version = "~> 4.0"
}
}
}
provider "azurerm" {
features {}
}
provider "azapi" {
enable_preflight = true
}
resource "azurerm_resource_group" "example" {
name = "rg-preflight-demo"
location = "eastus"
}
resource "azapi_resource" "vnet" {
type = "Microsoft.Network/virtualNetworks@2024-01-01"
parent_id = azurerm_resource_group.example.id
name = "vnet-example"
location = "eastus"
body = {
properties = {
addressSpace = {
addressPrefixes = [
"10.0.0.0/160" # Invalid prefix length — preflight catches this at plan time
]
}
}
}
}
Wanneer u deze configuratie uitvoert terraform plan , retourneert preflight een fout die vergelijkbaar is met:
Error: preflight validation failed for resource "azapi_resource.vnet":
The value '10.0.0.0/160' is not a valid CIDR block.
Als u het adresvoorvoegsel corrigeert naar een geldige waarde (bijvoorbeeld 10.0.0.0/16) wordt de fout gewist.
Wat wordt er vooraf gevalideerd?
Preflight verzendt de hoofdtekst van de resource naar het preflight-eindpunt van de ARM-API, dat het volgende valideert:
- Eigenschapswaarden voor het ARM-resourceschema (bijvoorbeeld geldige CIDR-bereiken (klasseloze Inter-Domain-routering), toegestane SKU-namen, vereiste velden).
- Quotum- en capaciteitsbeperkingen op abonnementsniveau voor ondersteunde resourcetypen.
- Naleving van beleid voor Azure Policy toewijzingen die worden uitgevoerd in de preflight-modus.
Preflight valideert niet :
- Afhankelijkheden of volgordebepaling tussen resources.
- Resources die geen ondersteuning voor arm-preflight-eindpunten hebben (de provider slaat de validatie voor deze resourcetypen op de achtergrond over.
- Verificatie- of autorisatiefouten (Identiteits- en toegangsbeheer (IAM)) - deze fouten ontstaan tijdens
terraform apply.
Preflight gebruiken in CI-pijplijnen
Het toevoegen van een preflight aan een CI-pijplijn biedt een snelle, niet-destructieve validatiestap waarmee configuratiefouten worden onderschept voordat code wordt samengevoegd. Zet enable_preflight = true aan in het providerblok van je Terraform-configuratie en voer terraform plan uit:
provider "azapi" {
enable_preflight = true
}
Omdat voorbereidende uitvoeringen worden uitgevoerd tijdens terraform plan zonder bijwerkingen, is het veilig om pull-aanvraagwerkstromen uit te voeren voor live Azure-abonnementen.
Uitvoerruis uitschakelen met ignore_no_op_changes
Als u plannen herhaaldelijk uitvoert, detecteert AzAPI mogelijk kleine no-op verschillen tussen de configuratie en de ARM-status (bijvoorbeeld genormaliseerde standaardwaarden die door de API worden geretourneerd). Als u deze verschillen in plantijd wilt onderdrukken en zich wilt richten op echte wijzigingen, stelt u ignore_no_op_changes = true in het providerblok in:
provider "azapi" {
enable_preflight = true
ignore_no_op_changes = true
}