HCP Terraform
Le service cloud de HashiCorp
HCP Terraform (pour HashiCorp Cloud Platform) est un service cloud développé par HashiCorp qui permet de faciliter le travail en équipe.
Parmi les fonctionnalités importantes, HCP Terraform propose l’importation de code existant depuis des repositories Git, de gérer automatiquement le state sans avoir à configurer manuellement un backend et de partager des ensembles de variables entre plusieurs projets. HCP Terraform archive également l’ensemble des exécutions de plan et d’apply, ce qui permet de comprendre l’historique d’un projet et d’aider au debugging. Enfin HCP Terraform propose un registry privé permettant d’héberger des modules et des providers.
HCP Terraform est disponible à l’adresse https://app.terraform.io.
Ce chapitre n’a pas vocation à être exhaustif sur l’utilisation de HCP Terraform, mais est plutôt une introduction et une démonstration des différentes fonctionnalités disponibles, via deux cas d’usages simples : exécuter du code Terraform et utiliser le registre de modules privé.
La manière la plus simple de s’authentifier à HCP Terraform est d’utiliser un compte GitHub. Il est aussi possible de créer un compte classique en utilisant un identifiant et un mot de passe.
Après avoir...
Exécuter du code Terraform
Pour commencer à exécuter du code Terraform sur HCP Terraform, la première étape consiste à créer un nouveau Workspace.
À la création d’un Workspace, trois modes, nommés workflows, sont disponibles :
Le Version Control Workflow permet de connecter directement un repository de code git (GitHub, GitLab, Bitbucket ou Azure DevOps) au Workspace. Les modifications apportées au code seront alors automatiquement détectées. Ce mode de fonctionnement est bien adapté aux débutants, car il est entièrement automatisé. Il permet de déployer de l’infrastructure à partir de code existant, sans avoir à exécuter des commandes terraform avec le CLI.
À l’inverse, le CLI-Driven Workflow permet de contrôler directement avec le CLI terraform l’exécution des plan et apply, tout en bénéficiant de l’utilisation de la plateforme HCP Terraform, avec la gestion de variables et d’historique des exécutions. Ce mode de fonctionnement est adapté aux développeurs ayant l’habitude d’utiliser Terraform, qui souhaitent contrôler plus finement leur workflow.
L’API-Driven Workflow permet de gérer entièrement les workspaces via une API. C’est le mode de fonctionnement le plus flexible, mais il implique de développer ses propres scripts et outils. Ce workflow très compliqué à mettre en place n’est pas présenté dans ce chapitre.
La documentation de HCP Terraform présente ce workflow dans les détails à cette adresse : https://developer.hashicorp.com/terraform/cloud-docs/run/api
1. Version Control Workflow
a. Créer le workflow
Pour créer un workspace utilisant le Version Control Workflow, il faut d’abord autoriser HCP Terraform à accéder au code. HCP Terraform permet de se connecter à un compte GitHub, GitLab, Bitbucket ou Azure Devops. Une fois la connexion faite (en quelques clics pour GitHub), il est possible de sélectionner le repository à importer :
Après avoir sélectionné le repository, un écran permet de modifier quelques options, puis de valider.
Une fois le workspace créé, il est possible de configurer...
Le registry privé
HCP Terraform propose également à ses utilisateurs un registry privé qui peut héberger des modules et des providers.
Le déploiement des providers sur le registry de HCP Terraform doit passer par des appels d’API et s’avère assez complexe. Cette procédure n’est pas illustrée dans ce chapitre. Elle est documentée dans la documentation de HCP Terraform à cette adresse : https://developer.hashicorp.com/terraform/cloud-docs/registry/publish-providers.
1. Publier un module
La publication d’un module dans HCP Terraform se fait en quelques clics. Contrairement au registry Terraform public, qui peut héberger des modules qui proviennent de repository GitHub publics uniquement, HCP Terraform peut héberger des modules qui proviennent de repositories GitHub publics ou privés, de projets GitLab, Bitbucket, ou Azure DevOps.
Le menu Registry conduit à la page du registry privé.
Une fois le module publié sur une des plateformes compatibles, en suivant la règle de nommage terraform-<PROVIDER>-<NAME>, un clic sur le bouton Publish - Module permet de sélectionner la plateforme puis le repository :
Après avoir sélectionné le repository à publier, le module est publié sur le registry privé. Une page résumée présente les mêmes...
Conclusion
Ce chapitre a présenté l’utilisation de HCP Terraform pour y exécuter le code Terraform et publier des modules. HCP Terraform est le choix le plus simple pour commencer à travailler en équipe.
L’utilisation hybride avec les Workflow Version Control et CLI-Driven peut séduire les utilisateurs débutants comme les plus expérimentés. Les fonctionnalités de gestion des variables avec les Variable Set permettent de sécuriser les accès aux secrets comme les clés d’API et autres tokens.
Certaines entreprises aiment également développer leur propre workflow ou outiller plus simplement leurs Devs et leurs Ops. L’Infrastructure as Code permet d’utiliser les outils de CI (Continuous Integration) et de CD (Continuous Deployment), alors pourquoi s’en priver ? Ces outils sont le propos du prochain chapitre.