Avvio rapido: Distribuire il servizio Azure AI Search con Terraform
Questo articolo illustra come usare Terraform per creare un servizio di Azure AI Search usando 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, è necessario creare un piano di esecuzione che consenta di visualizzare in anteprima le modifiche apportate all'infrastruttura prima che vengano distribuite. Dopo aver verificato le modifiche, è possibile applicare il piano di esecuzione per distribuire l'infrastruttura.
In questo articolo vengono illustrate le operazioni seguenti:
- Creare un nome di animale domestico casuale per il nome del gruppo di risorse di Azure utilizzando random_pet
- Creare un gruppo di risorse di Azure utilizzando azurerm_resource_group
- Creare una stringa casuale usando random_string
- Creare un servizio Azure AI Search usando azurerm_search_service
Prerequisiti
Implementare il codice Terraform
Nota
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.tf
e inserire il codice seguente:resource "random_pet" "rg_name" { prefix = var.resource_group_name_prefix } resource "azurerm_resource_group" "rg" { name = random_pet.rg_name.id location = var.resource_group_location } resource "random_string" "azurerm_search_service_name" { length = 25 upper = false numeric = false special = false } resource "azurerm_search_service" "search" { name = random_string.azurerm_search_service_name.result resource_group_name = azurerm_resource_group.rg.name location = azurerm_resource_group.rg.location sku = var.sku replica_count = var.replica_count partition_count = var.partition_count }
Creare un file denominato
outputs.tf
e inserire il codice seguente:output "resource_group_name" { value = azurerm_resource_group.rg.name } output "azurerm_search_service_name" { value = azurerm_search_service.search.name }
Creare un file denominato
providers.tf
e inserire 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.tf
e inserire il codice seguente:variable "resource_group_location" { type = string description = "Location for all resources." default = "eastus" } variable "resource_group_name_prefix" { type = string description = "Prefix of the resource group name that's combined with a random ID so name is unique in your Azure subscription." default = "rg" } variable "sku" { description = "The pricing tier of the search service you want to create (for example, basic or standard)." default = "standard" type = string validation { condition = contains(["free", "basic", "standard", "standard2", "standard3", "storage_optimized_l1", "storage_optimized_l2"], var.sku) error_message = "The sku must be one of the following values: free, basic, standard, standard2, standard3, storage_optimized_l1, storage_optimized_l2." } } variable "replica_count" { type = number description = "Replicas distribute search workloads across the service. You need at least two replicas to support high availability of query workloads (not applicable to the free tier)." default = 1 validation { condition = var.replica_count >= 1 && var.replica_count <= 12 error_message = "The replica_count must be between 1 and 12." } } variable "partition_count" { type = number description = "Partitions allow for scaling of document count as well as faster indexing by sharding your index over multiple search units." default = 1 validation { condition = contains([1, 2, 3, 4, 6, 12], var.partition_count) error_message = "The partition_count must be one of the following values: 1, 2, 3, 4, 6, 12." } }
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
-upgrade
aggiorna 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 principali:
- Il comando
terraform plan
consente 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
-out
facoltativo consente di specificare un file di output per il piano. L'uso del parametro-out
garantisce 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 principali:
- Il comando
terraform apply
di 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 apply
senza parametri.
Verificare i risultati
Ottenere il nome della risorsa di Azure in cui è stato creato il servizio Azure AI Search.
resource_group_name=$(terraform output -raw resource_group_name)
Ottenere il nome del servizio Azure AI Search.
azurerm_search_service_name=$(terraform output -raw azurerm_search_service_name)
Eseguire az search service show per visualizzare il servizio Azure AI Search creato in questo articolo.
az search service show --name $azurerm_search_service_name \ --resource-group $resource_group_name
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.tfplan
Punti principali:
- Il comando
terraform plan
consente 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
-out
facoltativo consente di specificare un file di output per il piano. L'uso del parametro-out
garantisce 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