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.
Articolo testato con le seguenti versioni di Terraform e del provider Terraform:
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.
Questo articolo illustra come usare il provider AzAPI Terraform per gestire una nuova funzionalità di un servizio di Azure attualmente non supportato dal provider AzureRM. Verrà azapi_update_resource usato per gestire un set di regole di rete di Azure EventHub .
- Definire e configurare i provider AzureRM e AzAPI
- Generare un nome casuale per lo spazio dei nomi Event Hubs
- Usare il provider AzureRM per creare un gruppo di risorse di Azure e le risorse di rete e hub eventi necessarie
- Usare il provider AzAPI per aggiungere un set di regole di rete alle
azurerm_eventhub_namespacerisorse
Annotazioni
Il codice di esempio in questo articolo si trova nel repository GitHub di Azure Terraform .
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:
Implementare il codice Terraform
Creare una directory in cui testare il codice Terraform di esempio e impostarla come directory corrente.
Creare un file denominato
providers.tfe inserire il codice seguente:terraform { required_providers { azapi = { source = "azure/azapi" version = "=0.1.0" } azurerm = { source = "hashicorp/azurerm" version = "=3.0.2" } random = { source = "hashicorp/random" version = "=3.1.2" } } } provider "azapi" { } provider "azurerm" { features {} } provider "random" { }Creare un file denominato
main.tfe inserire il codice seguente:resource "azurerm_resource_group" "qs101" { name = "rg-qs101-eh-rules" location = "westus2" } resource "azurerm_virtual_network" "qs101" { name = "myvnet" location = azurerm_resource_group.qs101.location resource_group_name = azurerm_resource_group.qs101.name address_space = ["172.17.0.0/16"] dns_servers = ["10.0.0.4", "10.0.0.5"] } resource "azurerm_subnet" "qs101" { name = "default" resource_group_name = azurerm_resource_group.qs101.name virtual_network_name = azurerm_virtual_network.qs101.name address_prefixes = ["172.17.0.0/24"] service_endpoints = ["Microsoft.EventHub"] } resource "random_pet" "qs101_namespace" { length = 3 separator = "" } resource "azurerm_eventhub_namespace" "qs101" { name = random_pet.qs101_namespace.id location = azurerm_resource_group.qs101.location resource_group_name = azurerm_resource_group.qs101.name sku = "Standard" capacity = 2 }Creare un file denominato
main-generic.tfe inserire il codice seguente:# AzAPI update resource is used to enable Network Rule sets on Event Hub namespace resource "azapi_update_resource" "qs101" { type = "Microsoft.EventHub/namespaces/networkRuleSets@2021-11-01" name = "default" parent_id = azurerm_eventhub_namespace.qs101.id body = jsonencode({ properties = { defaultAction = "Deny" publicNetworkAccess = "Enabled" virtualNetworkRules = [ { ignoreMissingVnetServiceEndpoint = false subnet = { # API bug, returned id replaced `resourceGroups` with `resourcegroups` id = replace(azurerm_subnet.qs101.id, "resourceGroups", "resourcegroups") } } ] ipRules = [ { action = "Allow" ipMask = "1.1.1.1" } ] } }) }
Inizializzare Terraform
Per inizializzare la distribuzione di Terraform, eseguire terraform init. Questo comando scarica il provider di Azure necessario per gestire le risorse di Azure.
terraform init -upgrade
Punti principali:
- Il parametro
-upgradeaggiorna i plug-in del provider necessari alla versione più recente conforme ai vincoli di versione della configurazione.
Crea un piano di esecuzione di Terraform
Eseguire terraform plan per creare un piano di esecuzione.
terraform plan -out main.tfplan
Punti principali:
- Il comando
terraform plancrea un piano di esecuzione, ma non lo esegue. Determina invece le azioni necessarie per creare la configurazione specificata nei file di configurazione. Questo modello consente di verificare se il piano di esecuzione corrisponde alle aspettative prima di apportare modifiche alle risorse effettive. - Il parametro facoltativo
-outconsente di specificare un file di output per il piano. L'uso del parametro-outgarantisce che il piano esaminato sia esattamente quello applicato.
Applicare un piano di esecuzione di Terraform
Esegui terraform apply per applicare il piano di esecuzione all'infrastruttura cloud.
terraform apply main.tfplan
Punti principali:
- Il comando
terraform applydi esempio presuppone che in precedenza sia stato eseguitoterraform plan -out main.tfplan. - Se è stato specificato un nome file diverso per il parametro
-out, usare lo stesso nome file nella chiamata aterraform apply. - Se non è stato usato il parametro
-out, chiamareterraform applysenza parametri.
Verificare i risultati
Eseguire az eventhubs namespace network-rule-set show per visualizzare le regole di rete dello spazio dei nomi di Hub eventi.
az eventhubs namespace network-rule show --resource-group <resource_group_name> --namespace-name <namespace_name>
Punti principali:
- Il nome del gruppo di risorse e il nome dello spazio dei nomi di Event Hub vengono visualizzati nell'output
terraform apply.
Pulire le risorse
Quando le risorse create tramite Terraform non sono più necessarie, seguire questa procedura:
Esegui terraform plan e specifica il flag
destroy.terraform plan -destroy -out main.destroy.tfplanPunti principali:
- Il comando
terraform plancrea un piano di esecuzione, ma non lo esegue. Determina invece le azioni necessarie per creare la configurazione specificata nei file di configurazione. Questo modello consente di verificare se il piano di esecuzione corrisponde alle aspettative prima di apportare modifiche alle risorse effettive. - Il parametro facoltativo
-outconsente di specificare un file di output per il piano. L'uso del parametro-outgarantisce che il piano esaminato sia esattamente quello applicato.
- Il comando
Eseguire terraform apply per applicare il piano di esecuzione.
terraform apply main.destroy.tfplan
Risolvere i problemi di Terraform in Azure
Risolvere i problemi comuni relativi all'uso di Terraform in Azure