DEPLOYEZ ET GERER DES RESSOURCES AZURE AVEC TERRAFORM

Contexte et Objectifs

Cet article va illustrer de façon simple et pratique le Infrastructure as a Code(IAC) . la possibilité de définir une infrastructure à l’aide d’un code déclaratif comme on le ferait pour n’importe lequel des programmes Informatiques. Nous allons utiliser pour ce faire le produit Terraform de Hashicorp pour créer une ressource dans Azure.

Etape 0:

Pour réaliser notre opération, nous avons besoin d’un abonnement azure . Microsoft propose de créer un abonnement gratuit avec 200$ de crédit ici : https://azure.microsoft.com/fr-fr/free/

Microsoft et l’éditeur de Terraform sont en partenariat ce qui fait que Terraform est inclus par défaut pour tous ceux qui utilisent le Bash Azure cloud Shell .

Etape 1: Petits Rappels sur Terraform

– Infrastructure as Code : Terraform permet de décrire des infrastructures avec une syntaxe très générique et de haut niveau (faisant abstraction des fournisseurs d’infrastructure). 

Execution Plans : Terraform permet de simuler les modifications qui vont être appliquées sur une infrastructure afin de prévoir et limiter les mauvaises surprises ou erreurs

– Resource Graph : Terraform construit un graph de toutes les ressources utilisées et parallélise la création et la modification de toutes les ressources indépendantes. Ainsi, les déploiements sont plus efficaces et les IT ont une vue sur les interdépendances de leurs infrastructures

Changement automatisé : des ensembles de modifications complexes peuvent être appliquées à une infrastructure avec peu d’interventions humaines et manuelles

Etape 2

Nous allons nous connecter sur notre portail Azure et lancer notre cloud Shell

Lancement du Azure cloud Shell

Etape 3 :

Nous allons créer un répertoire de travail et dans ce répertoire nomme mytfproject dans lequel nous allons mettre le fichier de configuration de Terraform , les fichiers Terraform utilisent un langage soit du HCL ou du Json . Et ont pour extension .tf .Dans notre example nous utilisons du HCL

Etape 4: Création de notre fichier de configuration Terraform.

Dans notre fichier nous renseignons simplement le provider à utiliser dans ce cas celui de Azure et nous créons un Resource Group avec les paramètres name et localisation qui sont les paramètres obligatoires pour créer une ressource de ce type. La syntaxe c’est du HCL c’est un langage déclaratif très facile à prendre en main. L’aide de Terraform est bien documentée sur ce sujet

Création d’un fichier de configuration Terraform

Etape 5: Création de notre plan Terraform

Comme nous venons de créer notre fichier nous allons dans un premier temps lancer la commande d’initialisation pendant cette phase Terraform prend connaissance de notre fichier de configuration , s’assure que les providers sont bien présents et encore plus intéressants affiche l’état qui sera effectif a la fin du plan . Les images ci-dessous illustrent le résultat de la commande terraform init . le signe ‘+” montre les ressources qui seront crées a la fin du plan si celui ci est execute

Terraform simule et affiche l’etat souhaite apres execution

Etape 6: Exécution du Plan Terraform

Si nous sommes satisfaits du résultat du plan, nous pouvons donc l’exécuter à l’aide de la commande terraform apply et vérifier l’exécution sur le portail c’est l’image 2

Terraform veut appliquer le plan qu’il a detecte
Une vue des ressources crées sur le portail

Etape 7: Terraform et l’état souhaite

La force d’un langage déclaratif comme Terraform c’est qu’il ne se préoccupe que de l’Etat souhaite et que nous mentionnons seulement ce que nous voulons comme résultat sans lui dire comment il va atteindre ce résultat. C’est un grand garçon et c’est pour ça que de multiples terraform apply ne vont pas générer une erreur. Comme ici-bas

Un autre Terraform Apply : l’etat souhaite est atteint .

Etape 7: destruction de ressources

Nous pouvons aussi à l’aide de terraform supprimer les ressources qui ont été crée . Dans les images qui suivent nous simulons le résultat de la destruction avec Terraform plan -destroy et supprimons effectivement avec Terraform destroy

Simulation du résultat de l’exécution de la commande destroy
Terraform demande une confirmation de suppression
Destruction effective des ressources

Références:

https://www.terraform.io/docs/configuration/resources.html

https://www.terraform.io/docs/configuration/syntax.html

tags: #Azure #Terraform

Auteur: NDOUMBE MBEY GASTON, Azure Cloud Architect, Author, Writer.

Linkedin: https://www.linkedin.com/in/gaston-ndoumbe-a13211a/