In questo tutorial imparerai ad archiviare lo stato di Terraform in un bucket Cloud Storage.
Per impostazione predefinita, Terraform archivia lo state localmente in un file denominato terraform.tfstate
. Questa configurazione predefinita può rendere difficile l'utilizzo di Terraform per i team quando più utenti eseguono Terraform contemporaneamente e ogni macchina ha la propria comprensione dell'infrastruttura attuale.
Per aiutarti a evitare questi problemi, questa pagina mostra come configurare uno stato remoto che punta a un bucket Cloud Storage. Lo stato remoto è una funzionalità dei backend Terraform.
Costi
Cloud Storage prevede costi per archiviazione, operazioni di lettura e scrittura, traffico in uscita dalla rete e replica.
Nel bucket Cloud Storage in questo tutorial è abilitato il controllo delle versioni degli oggetti per conservare la cronologia dei deployment. L'abilitazione del controllo delle versioni degli oggetti aumenta i costi di archiviazione, che puoi attenuare configurando Gestione del ciclo di vita degli oggetti per eliminare le versioni dello stato precedente.
Prima di iniziare
-
Assicurati di disporre delle
autorizzazioni Cloud Storage necessarie per il tuo
account utente:
storage.buckets.create
storage.buckets.list
storage.objects.get
storage.objects.create
storage.objects.delete
storage.objects.update
Scopri di più su ruoli e autorizzazioni.
Come best practice, consigliamo di controllare l'accesso al bucket e ai file di stato archiviati al suo interno. Solo un piccolo gruppo di utenti (ad esempio l'amministratore cloud principale e la persona che agisce come amministratore alternativo o di backup) deve disporre delle autorizzazioni di amministratore per il bucket. Gli altri sviluppatori devono disporre delle autorizzazioni solo per scrivere e leggere gli oggetti nel bucket.
- Avviare Cloud Shell
Cloud Shell è una macchina virtuale Compute Engine. Le credenziali di servizio associate a questa macchina virtuale sono automatiche, quindi non è necessario configurare o scaricare una chiave dell'account di servizio.
- Abilita l'API Cloud Storage:
gcloud services enable storage.googleapis.com
Configura Terraform per archiviare lo stato in un bucket Cloud Storage
Nei passaggi seguenti, creerai un bucket Cloud Storage e modificherai la configurazione del backend in base al nuovo bucket e al progetto Google Cloud.
crea il bucket
Aggiungi la seguente risorsa
google_storage_bucket
Terraform a un file di configurazione Terraform, ad esempiomain.tf
.Nello snippet di codice, il campo
location
è codificato inUS
(il che significa che viene creato un bucket multiregionale negli Stati Uniti). Puoi modificare questo campo con una località a tua scelta.Esegui
terraform apply
per creare il bucket di archiviazione.
Modifica la configurazione del backend
Aggiungi il testo seguente a un nuovo file di configurazione di Terraform denominato
backend.tf
.terraform { backend "gcs" { bucket = "BUCKET_NAME" prefix = "terraform/state" } }
Assicurati di aggiornare BUCKET_NAME in modo che corrisponda al nome del nuovo bucket Cloud Storage.
Esegui
terraform init
per configurare il tuo backend Terraform.Terraform rileva che hai già un file di stato in locale e ti chiede di copiarlo nel nuovo bucket Cloud Storage. Inserisci
yes
.
Dopo aver eseguito questo comando, il tuo stato di Terraform viene archiviato nel bucket Cloud Storage. Terraform estrae lo stato più recente da questo bucket prima di eseguire un comando ed esegue il push dello stato più recente nel bucket dopo aver eseguito un comando.
Passaggi successivi
- Scopri come gestire l'infrastruttura come codice con Terraform, Cloud Build e GitOps.
- Scopri di più sulla convalida delle norme.