Usare Terraform come strumento di infrastruttura come codice per l'interfaccia della riga di comando per sviluppatori di Azure
L'interfaccia della riga di comando per sviluppatori di Azure (azd
) supporta più infrastrutture come provider di codice (IaC), tra cui:
Per impostazione predefinita, azd
presuppone Bicep come provider IaC. Fare riferimento all'articolo Confronto tra Terraform e Bicep per informazioni sulla scelta del provider IaC migliore per il progetto.
Nota
Terraform è ancora in versione beta. Per altre informazioni sul supporto delle funzionalità alfa e beta, vedere la pagina relativa al controllo delle versioni delle funzionalità e alla strategia di rilascio
Prerequisiti
- Installare e configurare Terraform
- Installare e accedere all'interfaccia della riga di comando di Azure (v 2.38.0+)
- Esaminare il diagramma dell'architettura e le risorse di Azure da distribuire nel modello Terraform di Node.js o Python.
Nota
Anche se azd
non si basa su un account di accesso dell'interfaccia della riga di comando di Azure, Terraform richiede l'interfaccia della riga di comando di Azure. Per altre informazioni su questo requisito, vedere la documentazione ufficiale di Terraform.
Configurare Terraform come provider IaC
Aprire il
azure.yaml
file presente nella radice del progetto e assicurarsi di avere le righe seguenti per eseguire l'override del valore predefinito, ovvero Bicep:infra: provider: terraform
Aggiungere tutti i
.tf
file allainfra
directory trovata nella radice del progetto.Eseguire
azd up
.
Nota
Vedere questi due modelli azd con Terraform come provider IaC: Node.js e Terraform e Python e Terraform.
azd pipeline config
per Terraform
Terraform archivia lo stato relativo all'infrastruttura gestita e alla configurazione. A causa di questo file di stato, è necessario abilitare lo stato remoto prima di eseguire azd pipeline config
per configurare la pipeline di distribuzione in GitHub.
Per impostazione predefinita, azd
presuppone l'uso del file di stato locale. Se è stato eseguito azd up
prima di abilitare lo stato remoto, è necessario eseguire azd down
e passare al file di stato remoto.
Stato locale e remoto
Terraform usa dati di stato persistenti per tenere traccia delle risorse gestite.
Scenari per l'abilitazione dello stato remoto:
- Per consentire l'accesso condiviso ai dati sullo stato e consentire a più persone di collaborare su tale raccolta di risorse dell'infrastruttura
- Per evitare di esporre informazioni riservate incluse nel file di stato
- Per ridurre la probabilità di eliminazione accidentale a causa dell'archiviazione dello stato in locale
Abilitare lo stato remoto
Assicurarsi di configurare un account di archiviazione con stato remoto.
Aggiungere un nuovo file denominato
provider.conf.json
nellainfra
cartella .{ "storage_account_name": "${RS_STORAGE_ACCOUNT}", "container_name": "${RS_CONTAINER_NAME}", "key": "azd/azdremotetest.tfstate", "resource_group_name": "${RS_RESOURCE_GROUP}" }
Aggiornamento
provider.tf
trovato nellainfra
cartella per impostare il back-end come remoto# Configure the Azure Provider terraform { required_version = ">= 1.1.7, < 2.0.0" backend "azurerm" { }
Eseguire
azd env set <key> <value>
per aggiungere la configurazione nel.env
file. Ad esempio:azd env set RS_STORAGE_ACCOUNT your_storage_account_name azd env set RS_CONTAINER_NAME your_terraform_container_name azd env set RS_RESOURCE_GROUP your_storage_account_resource_group
Eseguire il comando successivo
azd
in base al flusso di lavoro consueto. Quando viene rilevato lo stato remoto,azd
inizializza Terraform con la configurazione back-end configurata.Per condividere l'ambiente con i compagni di squadra, assicurarsi di eseguire
azd env refresh -e <environmentName>
per aggiornare le impostazioni dell'ambiente nel sistema locale ed eseguire il passaggio 4 per aggiungere la configurazione nel.env
file.
Vedi anche
- Altre informazioni sulla dipendenza di Terraform dall'interfaccia della riga di comando di Azure.
- Per altre informazioni sullo stato remoto, vedere Archiviare lo stato di Terraform in Archiviazione di Azure.
- Modello: React Web App con API Node.js e MongoDB (Terraform) in Azure