Dans ce tutoriel, vous allez apprendre à stocker l'état Terraform dans un bucket Cloud Storage.
Par défaut, Terraform stocke l'état localement dans un fichier nommé terraform.tfstate
. Cette configuration par défaut peut rendre l'utilisation de Terraform difficile pour les équipes lorsque de multiples utilisateurs exécutent Terraform en même temps et que chaque ordinateur possède sa propre compréhension de l'infrastructure actuelle.
Pour vous aider à éviter de tels problèmes, cette page vous explique comment configurer un état distant qui pointe vers un bucket Cloud Storage. Un état distant est une fonctionnalité des backends Terraform.
Coûts
Cloud Storage entraîne des coûts liés au stockage, aux opérations de lecture et d'écriture, à la sortie réseau et à la réplication.
Dans le bucket Cloud Storage de ce tutoriel, la gestion des versions des objets est activée pour conserver l'historique de vos déploiements. L'activation de la gestion des versions des objets augmente les coûts de stockage. Vous pouvez limiter cette augmentation des coûts en configurant la gestion du cycle de vie des objets afin de supprimer les anciennes versions d'état.
Avant de commencer
-
Assurez-vous de disposer des autorisations Cloud Storage nécessaires sur votre compte utilisateur :
storage.buckets.create
storage.buckets.list
storage.objects.get
storage.objects.create
storage.objects.delete
storage.objects.update
En savoir plus sur les rôles et les autorisations.
Nous vous recommandons de contrôler les accès au bucket et aux fichiers d'état qui y sont stockés. Seul un petit groupe d'utilisateurs (par exemple, l'administrateur cloud principal et la personne agissant en tant qu'administrateur alternatif ou de secours) doit disposer des autorisations d'administrateur pour le bucket. Les autres développeurs doivent être uniquement autorisés à écrire et à lire des objets dans le bucket.
- Démarrez Cloud Shell.
Cloud Shell est une machine virtuelle Compute Engine. Les identifiants de service associés à cette machine virtuelle sont automatiques. Vous n'avez donc pas besoin de configurer ni de télécharger une clé de compte de service.
- Activez l'API Cloud Storage :
gcloud services enable storage.googleapis.com
Configurer Terraform pour stocker l'état dans un bucket Cloud Storage
Dans les étapes suivantes, vous allez créer un bucket Cloud Storage et modifier la configuration du backend pour votre nouveau bucket et votre projet Google Cloud.
Créer le bucket
Ajoutez la ressource Terraform
google_storage_bucket
suivante à un fichier de configuration Terraform, tel quemain.tf
.Dans l'extrait de code, le champ
location
est codé en dur surUS
(ce qui signifie qu'un bucket multirégional aux États-Unis est créé). Vous pouvez remplacer ce champ par l'emplacement de votre choix.Exécutez
terraform apply
pour créer le bucket de stockage.
Modifier la configuration du backend
Ajoutez le texte suivant à un nouveau fichier de configuration Terraform appelé
backend.tf
.terraform { backend "gcs" { bucket = "BUCKET_NAME" prefix = "terraform/state" } }
Veillez à mettre à jour la variable BUCKET_NAME pour qu'elle corresponde au nom de votre nouveau bucket Cloud Storage.
Exécutez
terraform init
pour configurer votre backend Terraform.Terraform détecte que vous disposez déjà d'un fichier d'état et vous invite à le copier dans le nouveau bucket Cloud Storage. Saisissez
yes
.
Une fois cette commande exécutée, votre état Terraform est stocké dans le bucket Cloud Storage. Terraform extrait le dernier état de ce bucket avant d'exécuter une commande et transfère le dernier état vers le bucket après l'exécution d'une commande.