Tutoriel : Développer son premier Provider Terraform
Outil open source permettant de construire, modifier et versionner une infrastructure de façon fiable et automatisée, Terraform est pour nous un outil de prédilection pour faire de l’Infra as Code. La communauté Terraform est très active, et nous y contribuons également. De nombreux providers Terraform sont déjà disponibles, mais comment en créer un pour un cas d’usage spécifique ? Nous vous proposons un tutoriel pour créer votre propre provider Terraform.
Terraform est un logiciel écrit en Go, reposant sur un système de plug-ins : le cœur gère l’interface CLI, l’interprétation des fichiers de configuration et la représentation des ressources et de leurs relations sous forme de graphe afin de les provisionner intelligemment en fonction de leurs interdépendances. Le provisioning en lui-même est géré par les providers, des plugin externes avec lesquels Terraform interagit via des interfaces standard.
Parmi les providers les plus utilisés on retrouve les grands services de cloud public tels que Amazon Web Services, Google Cloud Platform ou encore Microsoft Azure, mais il en existe bien d’autres. Dans une optique de formation interne, nous avons décidé de créer un plugin simple mais fonctionnel pour découvrir le développement de plugin Terraform. En complément de la très bonne documentation fournie par Hashicorp sur ce sujet, nous avons décidé de fournir le code du provider plugin en open-source, et de détailler son fonctionnement dans un article technique.
Le provider que nous avons développé s’appelle filesystem, et son rôle est de provisionner des fichiers et des répertoires unitaires locaux à Terraform, de façon similaire au provider local_file.
Dans cet article « My first Terraform provider » que vous pouvez consulter (en anglais), nous décrivons :
- La structure du plugin, les différents fichiers qui le composent et leur rôle.
- La construction et l’installation du binaire.
- L’utilisation du provider dans un setup Terraform standard, et la configuration de test.
À vous de jouer maintenant !