Terragrunt : une solution pour optimiser la gestion des environnements avec Terraform

Terragrunt : une solution pour optimiser la gestion des environnements avec Terraform



Consultez nos offres Cloud & DevOps

Terragrunt : une solution pour optimiser la gestion des environnements avec Terraform

Partagez toute l’actualité

Facebook
Twitter
LinkedIn


  • 1 août 2023

Dans cet article, nous vous présenterons Terragrunt, un outil qui simplifie la gestion des environnements pour les projets utilisant Terraform. Nous aborderons ses avantages, ses fonctionnalités et les bonnes pratiques pour une utilisation optimale de cet outil.

 

Terragrunt est un wrapper léger (thin wrapper) pour Terraform qui ajoute des fonctionnalités supplémentaires pour faciliter la gestion des configurations et des états (states) de Terraform. Cet outil aide à maintenir les normes de sécurité et à réduire les risques liés aux différentes configurations. 

Les avantages de Terragrunt par rapport à l’utilisation des  workspaces de Terraform sont multiples. Tout d’abord, Terragrunt simplifie le processus de configuration des environnements en réduisant la répétition du code. Terragrunt permet de gérer les variables et les configurations spécifiques à chaque environnement de manière plus efficace.

Les commandes et fonctions clés de Terragrunt

scafe-continuous-integration-livraison-continue

Parmi les commandes principales de Terragrunt :

  • La commande “Plan” permet de prévisualiser les changements qui seront appliqués à l’infrastructure avant de les déployer. Elle affiche les ressources qui seront créées, modifiées ou supprimées.
  • La commande “Apply” est utilisée pour déployer les changements sur l’infrastructure. Elle applique les modifications définies dans la configuration Terraform.
  • La commande “Destroy” est utilisée pour supprimer complètement l’infrastructure déployée. Elle détruit toutes les ressources créées par Terraform.

Les fonctions les plus utilisées sont « find in parent folder », « get env » et « get path to repo root ».

Ces fonctions permettent de gérer les configurations et les states de manière plus fluide et efficace :

  • Find in parent folder permet à Terragrunt de rechercher un fichier de configuration spécifique dans le répertoire parent. 
  • Get env permet de récupérer l’environnement actuel dans lequel Terragrunt est exécuté. Elle peut être utilisée pour adapter le comportement de Terragrunt en fonction de l’environnement cible.
  • Get path to repo root permet de récupérer le chemin absolu vers la racine du référentiel (repository) actuel. Cela peut être utile pour accéder à des fichiers ou des ressources se trouvant à des emplacements spécifiques dans la structure du référentiel.



En savoir plus

Comment utiliser Terragrunt ?

scafe-perfops-full-devops

1. Adoptez une approche modulaire en réutilisant des modules Terraform partagés pour gérer des ressources similaires dans plusieurs environnements. Cette pratique permet de réduire la duplication du code et facilite la maintenance à long terme

2. Utilisez les fichiers Terragrunt.hcl pour déclarer les variables spécifiques à chaque environnement. Cela permet de personnaliser les configurations en fonction des besoins spécifiques de chaque environnement en maintenant une structure claire.

3. Automatisez la gestion des dépendances entre les modules Terraform avec la fonctionnalité dependency de Terragrunt. Cela permet de s’assurer que les ressources sont créées et détruites dans le bon ordre.

4. Utilisez le verrouillage automatique des états (state locking) pour éviter les conflits lors de l’application simultanée de modifications à votre infrastructure.

5. Mettez en place des mécanismes de validation des changements avant de les appliquer à l’aide des fonctionnalités plan et apply, ainsi que des tests automatisés et des revues de code.

Le conseil de notre expert : “Pour bien comprendre le fonctionnement de Terragrunt, il est important de créer une architecture bien organisée et d’utiliser les fichiers Terragrunt.hcl pour déclarer les variables spécifiques à chaque environnement.

Les paramètres et variables spécifiques à chaque environnement sont déclarés dans ces fichiers, permettant une gestion simplifiée des configurations.”

Gérer les states avec Terragrunt

1. Utilisez un backend de stockage distant tel que Amazon S3, Google Cloud Storage ou Azure Blob Storage pour stocker et partager les états entre les membres de l’équipe.

2. Séparez les états par environnement (par exemple, production, staging, développement) pour éviter d’affecter accidentellement les ressources dans un environnement inapproprié.



Contactez un de nos experts Cloud & Devops

Le conseil de notre expert : “Terragrunt permet de gérer les fichiers .tfstate de manière flexible. Selon la configuration choisie, il est possible d’utiliser un state unique pour tous les environnements ou un state différent pour chaque environnement. Cette fonctionnalité offre une grande souplesse pour gérer les infrastructures.”

Terragrunt vs. Workspace

L’un des principaux avantages de Terragrunt par rapport à Workspace est la séparation entre le code Terraform et la gestion des environnements. Terragrunt permet de personnaliser les environnements en fonction des besoins, sans toucher au code Terraform. Toutefois, Terragrunt nécessite une installation supplémentaire et quelques concepts supplémentaires à apprendre.

Conseils et recommandations pour utiliser Terragrunt

Voici quelques conseils et recommandations :

  • Respecter une architecture bien organisée pour les dossiers et fichiers.
  • Utiliser les fichiers Terragrunt.hcl pour déclarer les variables spécifiques à chaque environnement.
  • Gérer les states avec souplesse selon les besoins de l’infrastructure.
  • Comparer Terragrunt et Workspace pour choisir la solution la plus adaptée à vos besoins.

En conclusion 

Terragrunt et Workspace offrent des solutions pour gérer les environnements dans vos projets Terraform.

Terragrunt présente l’avantage d’offrir une plus grande flexibilité dans la gestion des environnements, en permettant de personnaliser les backend et d’avoir une architecture plus propre. Cependant, il requiert une mise en place initiale plus rigoureuse et une compréhension approfondie de sa structure.

D’un autre côté, Workspace est une solution native de Terraform qui permet de démarrer rapidement, mais avec certaines limitations en termes de gestion des environnements et de séparation des codes.

En fin de compte, le choix entre Terragrunt et Workspace dépendra de vos besoins spécifiques, de la complexité de votre projet et de la rigueur avec laquelle vous êtes prêt à mettre en place et à maintenir votre architecture.

Contactez les équipes de SCAFE pour en savoir plus !

Rencontrons-nous !

La collecte des informations demandées est nécessaire au traitement de votre demande par SCAFE, responsable de traitement. Elle vous permettra d’être contacté(e) dans le cadre de votre requête. Ces informations collectées pourront être utilisées à des fins de prospection. Vous disposez d’un droit d’accès, de rectification, d’opposition et de suppression des données qui vous concernent. Pour les exercer, merci de consulter notre page Gestion de mes données personnelles. Nous vous invitons à prendre connaissance de notre Politique de protection des données.

À la une


  • 5 AOÛT 2023​
Helm, un outil indispensable​

Helm fait partie de l’écosystème Kubernetes et permet de gérer les applications Kubernetes en les packagant, les créant et les déployant…




Lire la suite


  • 12 JUIN 2023​
Docker, image et Registry​

Les architectures utilisant des processeurs ARM sont de plus en plus populaires dans les environnements locaux, car elles offrent de meilleures performances à des coûts réduits…

bandeau-scafe-docker


Lire la suite


  • 8 JUILLET 2023​
Utiliser Azure DevOps​

Le monde de l’informatique évolue de plus en plus rapidement, et les entreprises cherchent constamment à s’adapter à ces changements pour rester compétitives…

bandeau-scafe-azure-devops


Lire la suite

0
DÉVELOPPEURS
0
FULL DEVOPS
+
0
PROJETS
0
%
CLOUD NATIVE

Logo_Parrot
Logo_INSP.svg
images
index
TV5Monde_Logo.svg