Terraform Cloud, lancé en 2018 par HashiCorp, fournit gratuitement aux
développeurs un espace de stockage cloud pour gérer les states Terraform.
Cette version s’adresse avant tout aux petites comprenant jusqu’à cinq
développeurs.
Pour les plus grosses structures plusieurs
offres ↗ sont disponibles
donnant accès à plus de fonctionnalités. Il existe également une distribution
auto-hébergée de Terraform Cloud. Il offre aux entreprises une instance privée
qui inclut les fonctionnalités avancées disponibles dans Terraform Cloud.
Dans ce billet, je ne vais aborder que l’utilisation de la version gratuite de
Terraform Cloud.
Création du compte Terraform Cloud
Il suffit de se rendre sur la page suivante ↗ et de
s’inscrire.
Association de votre compte Terraform Cloud
Bien sûr, il faut que la CLI de Terraform soit installée, si ce n’est pas le cas
rendez-vous sur la page
suivante ↗ et de
suivre les instructions.
Une fois installé il suffit de taper la commande terraform login pour vous
connecter à votre compte Terraform Cloud. Elle va vous proposer de vous
rendre sur la page de génération des Tokens.
Il suffit de saisir un nom et de copier le token dans la cli :
La CLI stocke le token dans un fichier credentials.tfrc.json du répertoire
${HOME}/.terraform.d. Donc pas de souci au niveau de son enregistrement dans
un repository git.
Enregistrement du state dans Terraform Cloud
Il suffit d’indiquer le backend remote dans votre configuration en remplaçant le
nom de votre organisation indiquée dans Terraform Cloud:
Ici, nous indiquons clairement le nom du workspace. Si vous voulez utiliser
plusieurs workspace, il faut plutôt utiliser la clé préfixe au lieu de nom :
Utilisation de secrets dans Terraform Cloud
Si nous reprenons l’exemple du déploiement de notre infrastructure sur
AWS, nous devons adapter nos fichiers de
configuration. En effet, nos données sensibles, ne sont pas disponibles dans
Terraform Cloud comme nos ID AWS ou notre clé SSH.
Il faut donc les ajouter au fichier variables.tf:
Comme je ne veux pas qu’elle apparaisse dans les sorties je les mets de suite en
mode sensitive.
Ensuite dans notre fichier main.tf je dois aussi les intégrer :
Vous remarquerez que j’ai ajouté access_key et secret_key à la déclaration
du provider.
Il nous faut maintenant créer dans notre compte Terraform Cloud ces
variables. Il faut se rendre dans le menu settings/Organisation ou
settings/Variables Sets.
En premier, donnez un nom et une description à votre variable et choisir à quel
workspace il s’applique. On peut dire créer des variables propres à chaque
environnement.
Ensuite créer vos variables avec la catégorie terraform et sensitive :
Ensuite n’oubliez pas de cliquer sur [Create Variable Set]
Si vos variables ne sont pas correctement créés vous obtiendrez ce message
d’erreur lors du plan :
ou :
Application de notre configuration.
Notre VM s’est correctement instancié. Vérifions que nos secrets le sont bien :