Guida introduttiva: Distribuire un'istanza di Azure Cosmos DB in Istanze di Azure Container
Articolo testato con le versioni del provider Terraform e Terraform seguenti:
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.
Questo articolo illustra come usare Terraform per distribuire un'istanza di Azure Cosmos DB in Istanze di Azure Container.
In questo articolo vengono illustrate le operazioni seguenti:
- Creare un'istanza di Azure Cosmos DB
- Creare un'istanza di Azure Container
- Creare un'app che funzioni tra queste due risorse
Nota
Il codice di esempio in questo articolo si trova nel repository GitHub di Microsoft 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.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
main.tf
e inserire il codice seguente:resource "azurerm_resource_group" "rg" { name = "${random_pet.rg_name.id}-rg" location = var.resource_group_location } resource "azurerm_cosmosdb_account" "vote_cosmos_db" { name = "${random_pet.rg_name.id}-${random_integer.ri.result}" location = azurerm_resource_group.rg.location resource_group_name = azurerm_resource_group.rg.name offer_type = "Standard" kind = "GlobalDocumentDB" consistency_policy { consistency_level = "BoundedStaleness" max_interval_in_seconds = 10 max_staleness_prefix = 200 } geo_location { location = azurerm_resource_group.rg.location failover_priority = 0 } } resource "random_integer" "ri" { min = 10000 max = 99999 } resource "random_pet" "rg_name" { prefix = var.prefix }
Creare un file denominato
aci.tf
e inserire il codice seguente:resource "azurerm_container_group" "main" { name = "${random_pet.rg_name.id}-vote-aci" location = azurerm_resource_group.rg.location resource_group_name = azurerm_resource_group.rg.name ip_address_type = "Public" dns_name_label = "vote-aci-${random_integer.ri.result}" os_type = "Linux" container { name = "vote-aci" image = "mcr.microsoft.com/azuredocs/azure-vote-front:cosmosdb" cpu = "0.5" memory = "1.5" ports { port = 80 protocol = "TCP" } secure_environment_variables = { "COSMOS_DB_ENDPOINT" = azurerm_cosmosdb_account.vote_cosmos_db.endpoint "COSMOS_DB_MASTERKEY" = azurerm_cosmosdb_account.vote_cosmos_db.primary_key "TITLE" = "Azure Voting App" "VOTE1VALUE" = "Cats" "VOTE2VALUE" = "Dogs" } } }
Creare un file denominato
variables.tf
e inserire il codice seguente:variable "resource_group_location" { default = "eastus" description = "Location of the resource group." } variable "prefix" { type = string default = "cosmos-db-aci" description = "Prefix of the resource name" }
Creare un file denominato
outputs.tf
e inserire il codice seguente:output "resource_group_name" { value = azurerm_resource_group.rg.name } output "cosmosdb_account_name" { value = azurerm_cosmosdb_account.vote_cosmos_db.name } output "dns" { value = azurerm_container_group.main.fqdn }
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 di file diverso per il parametro
-out
, usare lo stesso nome di file nella chiamata aterraform apply
. - Se non è stato usato il parametro
-out
, chiamareterraform apply
senza parametri.
Verificare i risultati
Ottenere il nome del gruppo di risorse.
echo "$(terraform output resource_group_name)"
Ottenere il nome dell'account Azure Cosmos DB.
echo "$(terraform output cosmosdb_account_name)"
Eseguire az cosmosdb sql database list/
az cosmosdb sql database list \ --resource-group <resource_group_name> \ --account-name <cosmosdb_account_name>
Testare l'applicazione
Ottenere il nome dell'account Azure Cosmos DB.
echo "$(terraform output dns)"
Passare all'URL indicato nel passaggio precedente. Verrà visualizzata un output simile al seguente:
Pulire le risorse
Quando le risorse create tramite Terraform non sono più necessarie, eseguire i passaggi seguenti:
Eseguire il piano Terraform 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
Passaggi successivi
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per