Terraform-4 Modules 👨‍🔬

Objectifs:
🎯 créer un module.
🎯 exécuter un projet.

Prérequis:
💡 connaître ubuntu, windows.
💡 connaître docker.


logo de terraform, outil devops d'autimatisation du déploiement de ressources.

Pour faire suite au chapitre Terraform-3 Configuration du projet, nous allons nous attarder sur l'utilisation des modules. Comme vu dans la présentation de terraform, les modules permettent d'organiser des déploiements de manière logique.

Schema d'infra du déploiement réalisé lors du chapitre.

1) Explication du module vm.
Le module vm permet de déployer une vm dans GCP dans un vpc que j'ai déjà déployé à l'aide de mon module network (vous devrez donc en déployer un aussi que ce soit manuellement ou avec terraform). Résultat de la commande ls du module vm.

* Même structure qu'un projet, seul main.tf est nécessaire.
* LICENSE permet de définir les règles de partage du module avec la communauté .
* variables.tf permet de surcharger les vars héritées du projet ou d'en déclarer de nouvelles.
* outputs.tf permet de définir des valeurs à afficher en console en fin d'exécution du module (ex: l'ip des instances créées)

2) Explication du main.tf.

Playbook qui automatise la désactivation de la connexion avec mot de passe de ssh.

* Je me suis aidé de la DOC
* Je définis les capacités et paramètres réseaux de ma vm.
* Encore une fois, mon vpc existe déjà.

3) Explication de variables.tf.
Dans le chapitre précédent je vous ai montré l'extrait du fichier variables.tf du projet. Je vous invite à vous en inspirer pour définir dans le fichier variables.tf du module les variables utiles pour la création des instances.

4) Explication du outputs.tf.
Dans le module vm:

Resultat de la commande d'affichage du fichier outputs.tf.

* Nous voulons afficher l'ip de notre instance haproxy une fois créée.

A la racine du projet:

Resultat de la commande d'affichage du fichier outputs.tf du projet.

* Nous voulons récupérer et afficher l'output ip du module vm (nommé hprox dans le main.tf du projet).

5) Initialisation du projet.
Retourner à la racine du projet puis lancer la commande suivante:

terraform init;

Résultat de la commande terraform init.

6) Visualisation de l'exécution.

terraform plan;

Résultat de la commande tarraform plan.

* La commande nous résume les caractéristiques des ressources qui vont être créées

7) Exécution du projet.

terraform apply;

Résultat de la commande tarraform apply. Capture d'écran de la vm crée sur GCP.

* La vm a bien été créé sur GCP.

8) Explication du terraform .tfstate.
Résultat de la commande ls dans le dossier racine du projet terraform.

* Le bon déroulement de la commande apply génère 2 fichiers tfstate.
* Le terraform.tfstate est un json de tous les composants créés au dernier apply.
* Le terraform.tfstate.backup est l'état antérieur des ressources par rapport au dernier apply.
* En dev solo il suffit de conserver ce fichier en local, en dev en équipe il faudra partager ce fichier avec ses collègues à l'aide d'un outil de versionning de code source.

9) Destruction des ressources.

terraform destroy;

Resultat de la commande tarraform destroy.

* Suppression des ressources générées au dernier terraform apply
* Ma vm a bien été supprimé de mes instances GCP.


Conclusion:
Vous savez maintenant comment créer une vm. Un vpc étant nécessaire, si vous avez déployé le vôtre manuellement, je vous invite à vous créer un module pour le faire et de modifier le projet actuel afin d'y intégrer votre module.

Pensez à vous inspirer de la doc officielle et des modules partagés par la communauté (et les utiliser). Amusez-vous bien.