
Quand on parle de DevOps et de Cloud, il est impossible de ne pas penser au concept d’infrastructure as code (IAC).
Pour rappel, l’infrastructure as code (IaC) est une approche de gestion des infrastructures informatiques dans laquelle l’ensemble des ressources, configurations et dépendances nécessaires pour déployer et gérer une infrastructure sont représentés sous forme de code. L’IaC permet d’automatiser le processus en utilisant des langages de script et des outils spécifiques.
Dans ce domaine chez Komeet Technologies, nous avons une préférence : Terraform.
Il s’agit d’un outil open source développé par HashiCorp. Devenu l’un des standards dans le domaine, il adopte une approche déclarative, ce qui signifie que vous spécifiez l’état souhaité de votre infrastructure dans des fichiers de configuration, et Terraform se charge d’appliquer les changements nécessaires pour atteindre cet état. L’autre avantage est qu’il existe un ensemble de plug-in permettant d’ajouter des couches de sécurité, de syntaxe ou encore même de factoriser son code !
Aujourd’hui, je vais revenir sur ma dékouverte de quelques plug-in bien pratiques lorsque l’on souhaite développer avec Terraform.
Terrascan
Terrascan est un outil open source conçu pour analyser et vérifier la conformité aux meilleures pratiques de sécurité de son code IAC.
Comme son nom pourrait nous l’indiquer, il est compatible avec Terraform mais il peut également scanner des ressources provenant d’autres formats tels que Kubernetes, Docker et AWS CloudFormation.
Terrascan fonctionne en analysant les fichiers IaC et en comparant les configurations avec une base de données de règles prédéfinies. Ces règles sont basées sur des normes de sécurité établies telles que le CIS Benchmark ou encore les recommandations AWS Well-Architected.

Comme je vous le disais, Terrascan permet de gérer la sécurité en analysant les fichiers IaC pour détecter les problèmes de sécurité tels que les autorisations excessives, les configurations réseau vulnérables, les secrets exposés, etc.
Pour finir, l’outil permet également aux utilisateurs de personnaliser les règles de sécurité et de conformité en fonction des besoins spécifiques de leur organisation !
L’avis de l’expert : Dans un contexte où la sécurité des architectures est devenue fondamentale, Terrascan est un must-have lors du développement de votre code que ce soit en local ou bien en l’intégrant dans vos pipelines CI/CD.
Terragrunt
Comme on vous le disait, on aime bien Terraform, cependant, lorsque que l’on commence à travailler sur des projets de plus en plus complexes, on peut rapidement se retrouver avec des dizaines de fichiers de configuration à maintenir…Et alors, bonjour les dégâts !
Mais pas de panique, c’est à ce moment que Terragrunt entre en jeu. Crée par Gruntwork.io, il s’agit d’un outil de gestion de configurations Terraform qui est devenu incroyablement populaire ces derniers temps.
Pour faire simple, et il le fait, Terragrunt applique le principe du DRY (Don’t Repeat Yourself). Il aide à gérer les dépendances et la configuration de Terraform de manière efficace. Il permet de structurer les fichiers Terraform en modules réutilisables, ce qui peut être très utile pour des projets à grande échelle. De plus, Terragrunt gère automatiquement la version de vos modules et vous permet de définir des dépendances entre les modules de manière très simple.
Mais ce n’est pas tout ! Terragrunt inclut également des fonctionnalités telles que la gestion des secrets, la prévention des erreurs grâce à la vérification de la syntaxe Terraform, ainsi que la possibilité de définir des paramètres pour vos modules de manière centralisée.
L’avis de l’expert : Terragrunt est un outil formidable pour gérer vos configurations Terraform de manière plus efficace et organisée. Si vous travaillez sur des projets Terraform plus importants, impliquant notamment plusieurs environnements, je vous recommande de jeter un coup d’œil à Terragrunt.
Tflint
TFLint est la dernière solution de ma boite à outils DevOps. Ce plugin open source est conçu pour analyser et valider les fichiers de configuration Terraform.
L’outil détecte les problèmes spécifiques à certains fournisseurs de cloud, en s’appuyant sur des règles prédéfinies. Il offre également des règles de linting pour vous aider à respecter les bonnes pratiques de configuration Terraform. Il peut signaler des problèmes de sécurité, des syntaxes dépréciées, des configurations déconseillées, des ressources inutilisées, des dépendances non explicitées, etc. Cela aide à maintenir une infrastructure Terraform cohérente et conforme aux meilleures pratiques.

TFLint permet aux utilisateurs de personnaliser les règles et d’ajouter leurs propres règles spécifiques à leur environnement ou à leur organisation. Vous pouvez configurer les règles selon vos besoins spécifiques et définir des règles supplémentaires pour renforcer les pratiques de configuration souhaitées.
L’autre point fort est que l’outil bénéficie d’une communauté active qui contribue à son développement et partage des règles supplémentaires. Vous pouvez trouver des règles prédéfinies pour les principales pratiques recommandées et les fournisseurs de cloud courants, ainsi que des ressources supplémentaires pour personnaliser et étendre les fonctionnalités.
L’avis de l’expert : TFLint est un outil utile pour améliorer la qualité et la fiabilité de votre code. En l’intégrant dans vos développements, vous pourrez maintenir des pratiques de configuration cohérentes et éviter des problèmes potentiels lors du déploiement de votre infrastructure.
Et voilà, je pense qu’avec ces briques vous êtes prêt à déployer votre infrastructure plus sereinement ! N’hésitez pas à nous partager vos outils favoris en commentaire !