Terraform est un outil open source qui permet de définir, de concevoir, et de déployer une infrastructure avec toutes ses composantes nécessaires (stockage, réseau, serveurs, etc.) sur le cloud avec du code, on parle alors d'infrastructure as code
Terraform utilise donc le langage HCL (HashiCorp Configuration Langage) pour décrire le desiered state d'une infrastructure lambda sur le cloud.Le code Terraform dépend du fournisseur de l'infrastructure en cloud. Par exemple, un code Terraform défini pour une topologie AWS ne peut pas être réutilisé pour une topologie Microsoft Azure.
Dans cet article nous verrons comment faire le provisionnement de plusieurs VMs via Terraform
Prérequis :
avant de commencer, il est à noter que vous devez installer certains outils nécessaires sur votre environnement de travail :
Terraform : lien de téléchargement ; https://www.terraform.io/downloads
Azure Cli : lien de téléchargement : https://docs.microsoft.com/en-us/cli/azure/install-azure-cli
Les deux outils sus cités devraient aussi être accessible via ligne de commande en configurant les variables d'environnement si vous êtes sous Windows.
Vous pouvez cloner le code utilisé dans ce tutoriel depuis ce lien GitHub :
https://github.com/hocinewalid/terraform-multiple-vms
Architecture de l'infrastructure déployée
Conformément à l'architecture illustrée ci-dessus, il y a deux vm ainsi que deux disques gérés par azure, un seule vnet dans lequel y a deux sous réseaux (subnet) dans lequel y a deux cartes réseaux chacune affécté a une vm avec une IP publique attachée à ces dernières.
En effet, ces données sont à prendre en considération lors de l'écriture du code de l'infrastructure déployée afin d'éviter des erreurs durant le dépoloiment, dont certaines erreurs serait directement lié à ce que des ressources similaires sont dejà deployé sous le même nom,
pour éviter cela, et en plus de définir le méta argument "count = 2" pour définir le déploiement de deux ressources, on utilise cet argument comme variable pour le nom de la ressource avec un index qui sera incrémenté automatiquement lors d'un deuxième déploiement puis de faire une "concaténation" a une chaine de caractère qui décrit la ressource déployée.
code utilisé :
étape de déploiement
connexion à la souscription azure
az login
une fois la ligne exécutée vous devez vous authentifier via votre compte Microsoft lié a la souscription azure.
Pour sélectionner une souscription sur laquelle interagir sur le Az CLI saisissez la commande suivante :
az account set --subscription id_de_votre_souscription_azure
terraform init
La commande init examine vos fichiers de configuration et détermine quels fournisseurs et modules elle doit télécharger à partir du registre public de terraform pour permettre à votre configuration de fonctionner correctement.
terraform plan
Validation de la syntaxe du code Terraform
terraform validate
terraform apply --auto-approve
On peut aussi visualiser les ressources déployées via le visualiseur de ressources Azure comme illustré ci-dessous et qui correspond à l'architecture définie au début du tutoriel.
Si vous n'avez plus besoin de l'infrastructure déployée, il est possible de détruire l'infrastructure déployée via la ligne de commande :
terraform destroy