Bonnes pratiques pour les opérations Terraform

Ce document fournit des consignes et des recommandations pour les opérations Terraform.

Ce guide n'est pas une introduction à Terraform. Pour une présentation de l'utilisation de Terraform avec Google Cloud, consultez la page Premiers pas avec Terraform.

Planifier toujours en premier

Commencez toujours par générer un plan pour les exécutions Terraform. Enregistrez le plan dans un fichier de sortie. Une fois qu'un propriétaire d'infrastructure l'a approuvé, exécutez le plan. Même lorsque les développeurs prototypent localement des modifications, ils doivent générer un plan et passer en revue les ressources à ajouter, modifier et supprimer avant d'appliquer le plan.

Mettre en œuvre un pipeline automatisé

Pour garantir un contexte d'exécution cohérent, exécutez Terraform via des outils automatisés. Si un système de compilation (tel que Jenkins) est déjà utilisé et largement adopté, utilisez-le pour exécuter automatiquement les commandes terraform plan et terraform apply. Si aucun système existant n'est disponible, adoptez Cloud Build ou Terraform Cloud.

Utiliser les identifiants du compte de service pour l'intégration continue

Lorsque Terraform est exécuté à partir d'une machine dans un pipeline CI/CD, il doit hériter des identifiants de compte de service du service exécutant le pipeline. Dans la mesure du possible, exécutez les pipelines CI sur Google Cloud car Cloud Build, Google Kubernetes Engine ou Compute Engine injectent des identifiants sans télécharger les clés de compte de service.

Pour les pipelines exécutés en dehors de Google Cloud, préférez la fédération d'identité de charge de travail pour obtenir des identifiants sans télécharger de clés de compte de service.

Éviter d'importer des ressources existantes

Dans la mesure du possible, évitez d'importer des ressources existantes (en utilisant terraform import), car cela peut rendre difficile la compréhension de la provenance et de la configuration des ressources créées manuellement. Créez plutôt des ressources via Terraform et supprimez les anciennes.

Si la suppression d'anciennes ressources est trop laborieuse, utilisez la commande terraform import avec une approbation explicite. Une fois qu'une ressource a été importée dans Terraform, vous pouvez la gérer exclusivement avec Terraform.

Google fournit un outil permettant d'importer vos ressources Google Cloud dans l'état Terraform. Pour plus d'informations, consultez la section Importer vos ressources Google Cloud dans l'état Terraform.

Ne pas modifier manuellement l'état Terraform

Le fichier d'état Terraform est essentiel pour maintenir le mappage entre la configuration Terraform et les ressources Google Cloud. Sa corruption peut entraîner de graves problèmes d'infrastructure. Lorsque des modifications de l'état Terraform sont nécessaires, utilisez la commande terraform state.

Examiner régulièrement les versions épinglées

Épingler des versions garantit la stabilité mais empêche l'intégration de correctifs de bugs et d'autres améliorations dans votre configuration. Par conséquent, examinez régulièrement les versions épinglées pour Terraform, les fournisseurs Terraform et les modules.

Vous pouvez automatiser ce processus avec un outil comme Dependabot.

Utiliser les identifiants par défaut de l'application lors de l'exécution en local

Lorsque les développeurs itèrent sur la configuration Terraform en local, ils doivent s'authentifier en exécutant gcloud auth application-default login pour générer les identifiants par défaut de l'application. Ne téléchargez pas de clés de compte de service, car elles sont plus difficiles à gérer et à sécuriser.

Définir des alias sur Terraform

Pour faciliter le développement en local, vous pouvez ajouter des alias au profil de shell :

  • alias tf="terraform"
  • alias terrafrom="terraform"

Étapes suivantes