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.
In questa guida introduttiva si creerà un account Azure Batch, un account Archiviazione di Azure e due pool di Batch usando Terraform. Batch è un servizio di pianificazione dei processi basato sul cloud che parallelizza e distribuisce l'elaborazione di grandi volumi di dati in molti computer. Viene in genere usato per gli sweep parametrici, le simulazioni monte Carlo, la modellazione dei rischi finanziari e altre applicazioni di elaborazione ad alte prestazioni. Un account Batch è la risorsa di primo livello nel servizio Batch che fornisce l'accesso a pool, processi e attività. L'account di archiviazione viene usato per archiviare e gestire tutti i file usati e generati dal servizio Batch, mentre i due pool di Batch sono raccolte di nodi di calcolo che eseguono le attività.
Terraform abilita la definizione, l'anteprima e la distribuzione dell'infrastruttura cloud. Con Terraform si creano 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.
- Specificare la versione richiesta di Terraform e i provider necessari.
- Definire il provider di Azure senza funzionalità aggiuntive.
- Definire le variabili per la posizione del gruppo di risorse e il prefisso del nome del gruppo di risorse.
- Generare un nome casuale per il gruppo di risorse usando il prefisso specificato.
- Creare un gruppo di risorse di Azure con il nome generato nella posizione specificata.
- Generare una stringa casuale da usare come nome per l'account di archiviazione.
- Creare un account di archiviazione con il nome generato nel gruppo di risorse creato, nella stessa posizione e con un livello account standard e un tipo di replica di archiviazione con ridondanza locale.
- Generare un'altra stringa casuale da usare come nome per l'account Batch.
- Creare un account Batch con il nome generato nel gruppo di risorse creato, nella stessa posizione e collegarlo all'account di archiviazione creato con la modalità di autenticazione delle chiavi di archiviazione.
- Generare un nome casuale per il pool di Batch con un prefisso "pool".
- Creare un pool di Batch con una scalabilità fissa usando il nome generato nel gruppo di risorse creato, collegato all'account Batch creato, con dimensioni standard della macchina virtuale A1, SKU dell'agente del nodo Ubuntu 22.04 e un'attività di avvio che restituisce "Hello World da $env" con un massimo di un tentativo e attende l'esito positivo.
- Creare un altro pool di Batch con scalabilità automatica, usando lo stesso nome generato, nel gruppo di risorse creato, collegato all'account Batch creato, con dimensioni standard di macchina virtuale A1, SKU dell'agente del nodo Ubuntu 22.04 e una formula di scalabilità automatica.
- Restituire i nomi del gruppo di risorse creato, dell'account di archiviazione, dell'account Batch e di entrambi i pool di Batch.
Prerequisiti
- Creare un account Azure con una sottoscrizione attiva. È possibile creare gratuitamente un account.
- Installare e configurare Terraform.
Implementare il codice Terraform
Note
Il codice di esempio per questo articolo si trova nel repository GitHub di Azure Terraform. È possibile visualizzare il file di log contenente i risultati del test delle versioni correnti e precedenti di Terraform.
Vedere altri articoli e codice di esempio che illustrano come usare Terraform per gestire le risorse di Azure.
Creare una directory in cui testare ed eseguire il codice Terraform di esempio e impostarla come directory corrente.
Creare un file denominato
main.tfe immettere il codice seguente:resource "random_pet" "rg_name" { prefix = var.resource_group_name_prefix } resource "azurerm_resource_group" "rg" { location = var.resource_group_location name = random_pet.rg_name.id } resource "random_string" "storage_account_name" { length = 8 lower = true numeric = false special = false upper = false } resource "azurerm_storage_account" "example" { name = random_string.storage_account_name.result resource_group_name = azurerm_resource_group.rg.name location = azurerm_resource_group.rg.location account_tier = "Standard" account_replication_type = "LRS" } resource "random_string" "batch_account_name" { length = 8 lower = true numeric = false special = false upper = false } resource "azurerm_batch_account" "example" { name = random_string.batch_account_name.result resource_group_name = azurerm_resource_group.rg.name location = azurerm_resource_group.rg.location storage_account_id = azurerm_storage_account.example.id storage_account_authentication_mode = "StorageKeys" } resource "random_pet" "azurerm_batch_pool_name" { prefix = "pool" } resource "azurerm_batch_pool" "fixed" { name = "${random_pet.azurerm_batch_pool_name.id}-fixed-pool" resource_group_name = azurerm_resource_group.rg.name account_name = azurerm_batch_account.example.name display_name = "Fixed Scale Pool" vm_size = "Standard_A1" node_agent_sku_id = "batch.node.ubuntu 22.04" fixed_scale { target_dedicated_nodes = 2 resize_timeout = "PT15M" } storage_image_reference { publisher = "Canonical" offer = "0001-com-ubuntu-server-jammy" sku = "22_04-lts" version = "latest" } start_task { command_line = "echo 'Hello World from $env'" task_retry_maximum = 1 wait_for_success = true common_environment_properties = { env = "TEST" } user_identity { auto_user { elevation_level = "NonAdmin" scope = "Task" } } } metadata = { "tagName" = "Example tag" } } resource "azurerm_batch_pool" "autopool" { name = "${random_pet.azurerm_batch_pool_name.id}-autoscale-pool" resource_group_name = azurerm_resource_group.rg.name account_name = azurerm_batch_account.example.name display_name = "Auto Scale Pool" vm_size = "Standard_A1" node_agent_sku_id = "batch.node.ubuntu 22.04" auto_scale { evaluation_interval = "PT15M" formula = <<EOF startingNumberOfVMs = 1; maxNumberofVMs = 25; pendingTaskSamplePercent = $PendingTasks.GetSamplePercent(180 * TimeInterval_Second); pendingTaskSamples = pendingTaskSamplePercent < 70 ? startingNumberOfVMs : avg($PendingTasks.GetSample(180 * TimeInterval_Second)); $TargetDedicatedNodes=min(maxNumberofVMs, pendingTaskSamples); EOF } storage_image_reference { publisher = "Canonical" offer = "0001-com-ubuntu-server-jammy" sku = "22_04-lts" version = "latest" } }Creare un file denominato
outputs.tfe immettere il codice seguente:output "resource_group_name" { value = azurerm_resource_group.rg.name } output "storage_account_name" { value = azurerm_storage_account.example.name } output "batch_account_name" { value = azurerm_batch_account.example.name } output "batch_pool_fixed_name" { value = azurerm_batch_pool.fixed.name } output "batch_pool_autopool_name" { value = azurerm_batch_pool.autopool.name }Creare un file denominato
providers.tfe immettere il codice seguente:terraform { required_version = ">=1.0" required_providers { azurerm = { source = "hashicorp/azurerm" version = "~>3.0" } random = { source = "hashicorp/random" version = "~>3.0" } } } provider "azurerm" { features {} }Creare un file denominato
variables.tfe immettere il codice seguente:variable "resource_group_location" { type = string default = "eastus" description = "Location of the resource group." } variable "resource_group_name_prefix" { type = string default = "rg" description = "Prefix of the resource group name that's combined with a random ID so name is unique in your Azure subscription." }
Inizializzare Terraform
Eseguire terraform init per inizializzare la distribuzione di Terraform. Questo comando scarica il provider di Azure necessario per gestire le risorse di Azure.
terraform init -upgrade
Punti chiave:
- Il parametro
-upgradeaggiorna i plug-in del provider necessari alla versione più recente conforme ai vincoli di versione della configurazione.
Creare un piano di esecuzione Terraform
Eseguire terraform plan per creare un piano di esecuzione.
terraform plan -out main.tfplan
Punti chiave:
- Il comando
terraform planconsente di creare un piano di esecuzione, ma non di eseguirlo. 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
-outfacoltativo consente di specificare un file di output per il piano. L'uso del parametro-outgarantisce che il piano esaminato sia esattamente quello che viene applicato.
Applicare un piano di esecuzione Terraform
Eseguire terraform apply per applicare il piano di esecuzione all'infrastruttura cloud.
terraform apply main.tfplan
Punti chiave:
- 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 batch account show per visualizzare l'account Batch.
az batch account show --name <batch_account_name> --resource-group <resource_group_name>
Sostituire <batch_account_name> con il nome dell'account Batch e <resource_group_name> con il nome del gruppo di risorse.
Pulire le risorse
Quando le risorse create tramite Terraform non sono più necessarie, eseguire i passaggi seguenti:
Eseguire terraform plan e specificare il flag
destroy.terraform plan -destroy -out main.destroy.tfplanPunti chiave:
- Il comando
terraform planconsente di creare un piano di esecuzione, ma non di eseguirlo. 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
-outfacoltativo consente di specificare un file di output per il piano. L'uso del parametro-outgarantisce che il piano esaminato sia esattamente quello che viene 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.