Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Terraform consente di definire, visualizzare in anteprima e distribuire l'infrastruttura cloud. Con Terraform è possibile creare file di configurazione usando la sintassi HCL. La sintassi HCL consente di specificare il provider di servizi cloud, ad esempio Azure, e gli elementi che costituiscono l'infrastruttura cloud. Dopo aver creato i file di configurazione, si crea un piano di esecuzione che consente di visualizzare in anteprima le modifiche dell'infrastruttura prima della distribuzione. Dopo aver verificato le modifiche, è possibile applicare il piano di esecuzione per distribuire l'infrastruttura.
Il provider AzAPI Terraform include la convalida preliminare predefinita che convalida la configurazione delle risorse Azure rispetto allo schema dell'API ARM durante terraform plan, prima che le risorse vengano create o modificate in Azure. La verifica preliminare rileva gli errori di configurazione in anticipo, ad esempio prefissi di indirizzi non validi, combinazioni di proprietà non supportate o violazioni delle quote, senza incorrere nel costo di una distribuzione non riuscita.
La convalida preliminare è uno degli elementi distintivi di AzAPI e funziona in modo nativo con l'architettura direct-to-ARM-API del provider. Puoi anche eseguire il preflight dall'estensione Microsoft Terraform VS Code senza impostare il flag del provider direttamente.
Prerequisiti
- Sottoscrizione di Azure: se non si ha una sottoscrizione di Azure, creare un account gratuito prima di iniziare.
Configurare Terraform: se non è già stato fatto, configurare Terraform usando una delle opzioni seguenti:
Quando si accede al portale di Azure con un account Microsoft, viene usata la sottoscrizione di Azure predefinita per tale account.
Terraform esegue automaticamente l'autenticazione usando le informazioni della sottoscrizione di Azure predefinita.
Eseguire az account show per verificare l'account Microsoft corrente e la sottoscrizione di Azure.
az account show
Tutte le modifiche apportate tramite Terraform si trovano nella sottoscrizione di Azure visualizzata. Se è questo che vuoi, salta il resto di questo articolo.
Abilitare la convalida preliminare
Impostare enable_preflight = true nel blocco provider "azapi".
provider "azapi" {
enable_preflight = true
}
Preflight è disabilitato per impostazione predefinita per preservare la compatibilità con le versioni precedenti. Abilitarlo negli ambienti in cui si vuole eseguire la convalida anticipata, ad esempio pipeline di integrazione continua e controlli delle richieste pull.
Esempio: Rilevare un prefisso di indirizzo non valido in fase di pianificazione
La configurazione seguente crea una rete virtuale con un blocco CIDR (Classless Inter-Domain Routing) non valido. Con l'abilitazione preliminare, l'errore viene visualizzato durante terraform plan anziché durante 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
]
}
}
}
}
Quando si esegue terraform plan con questa configurazione, preflight restituisce un errore simile al seguente:
Error: preflight validation failed for resource "azapi_resource.vnet":
The value '10.0.0.0/160' is not a valid CIDR block.
La correzione del prefisso dell'indirizzo su un valore valido ( ad esempio , 10.0.0.0/16) cancella l'errore.
Cosa convalida il preflight
Preflight invia il corpo della risorsa all'endpoint preflight dell'API ARM, che convalida:
- Valori delle proprietà rispetto allo schema delle risorse ARM (ad esempio, intervalli CIDR validi (Classless Inter-Domain Routing), nomi di SKU consentiti, campi obbligatori).
- Vincoli di quota e capacità a livello di sottoscrizione per i tipi di risorse supportati.
- Conformità ai criteri per le assegnazioni di Criteri di Azure eseguite in modalità preflight.
La verifica preliminare non viene convalidata:
- Dipendenze tra risorse o sequenziazione.
- Risorse che non dispongono del supporto dell'endpoint preliminare ARM (il provider ignora automaticamente la convalida per questi tipi di risorse).
- Errori di autenticazione o autorizzazione (Gestione delle Identità e degli Accessi, IAM): questi errori si verificano durante
terraform apply.
Usare il controllo preliminare nelle pipeline CI
L'aggiunta della verifica preliminare a una pipeline CI fornisce un passaggio di convalida rapido e non distruttivo che intercetta gli errori di configurazione prima del merge del codice. Abilita enable_preflight = true nel blocco del provider della configurazione Terraform, quindi esegui terraform plan:
provider "azapi" {
enable_preflight = true
}
Poiché il preflight viene eseguito durante terraform plan senza effetti collaterali, è sicuro eseguire i flussi di lavoro delle pull request in Azure nelle sottoscrizioni live.
Disabilitare il rumore di output con ignore_no_op_changes
Se i piani vengono eseguiti ripetutamente, AzAPI potrebbe rilevare differenze minime no-op tra la configurazione e lo stato di ARM, ad esempio valori predefiniti normalizzati restituiti dall'API. Per eliminare queste differenze in fase di pianificazione e concentrarsi sulle modifiche reali, impostare ignore_no_op_changes = true nel blocco del provider:
provider "azapi" {
enable_preflight = true
ignore_no_op_changes = true
}