Dans cet article nous allons voir comment déployer des ressources avec Terraform. Dans un précédent article j’ai décrit brièvement Terraform . je vous invite donc à jeter un oeil au cas où.
Pour installer Terraform vous avez plusieurs manière de faire j’y reviendrais pour donner une alternative à ce que nous allons voir .
J’utilise dans cet exemple Chocolatey un outil gestion de package open source qui permet d’installer et de désinstaller des logiciels sur windows de manière simple et efficace
Dans un premier temps la commande : choco version permet de voir la version de chocolatey . choco suivi du package suivi d’ upgrade permet de mettre à jour le package défini . Dans mon exemple powershell .


Pour installer Terraform rien de plus simple
choco install terraform

Pour vérifier si on a bien la dernière version qui est la v0.12.20 puis la liste des commandes disponibles.
terraform version
terraform


J’ai créé un dossier dédié à mon espace de travail pour mes déploiements Terraform . Je tape les commandes suivantes pour dans un premier temps me positionner au nouveau du dossier que je viens de créer et dans un deuxième créer mon espace de travail nommé Infrastructure .
cd C:\Users\ibrah\Documents\IM-DEV-WKS
terraform workspace new Infrastructure

Comme vous pouvez le constater ci dessous on ne parle plus d’environnements mais de workspace. Pour les lister ou avoir de l’aide :
terraform workspace list
terraform workspace --help

Dans la liste des espaces de travail on voit un * à coté d’infrastructure ce qui veut dire qu’on est plutôt pas mal niveau configuration.
Vous pouvez créer avec les commandes suivantes les fichiers .tf main et variables qui vous nous servir à déployer les ressources . Il ne reste plus qu’à initialiser le backend .
New-Item -Name "Main.tf"
New-Item -Name "Variables.tf"
Terraform init

Dans visual studio code je clique sur Fichier puis Ouvrir un dossier . Ensuite j’ouvre mon dossier ou j’avais précédemment créé mes fichiers de configurations.


Dans Visual Studio Code vous pouvez ajouter l’extension Terraform pour avoir la vue ci dessous .
Microsoft décrit dans un didacticiel comment configurer l’extension :
https://docs.microsoft.com/fr-fr/azure/terraform/terraform-vscode-extension

Vous pouvez aussi afficher le terminal powershell pour éxécuter des commandes pour se connecter par exemple




Me voilà authentifié et je n’ai pas besoin de changer de souscription puisque c’est celle qui est par défaut qui m’intéresse . Par contre j’ai besoin de récupérer l’Id de la souscription pour créer le service principal qui va me servir pour le déploiement .
Get-AzSubscription
az ad sp create-for-rbac --role="contributor" --scopes="/subscriptions/Iddelasouscription



Le fichier Main.tf contient tous les ressources qui doivent être déployées . Pour faciliter mon déploiement je référence des variables dans Variables .tf pour garder la flexibilité pour mes prochains déploiements .
- Un groupe de ressources im-dev-rg-001
- Un réseau virtuel im-dev-vnet-001
- Une sous réseau im-dev-snet-001
- Un autre sous réseau im-dev-snet-002
- Un ensemble de Tags pour faciliter l’identification et la facturation(Scenario).



Depuis le terminal je peux utiliser l’option plan pour voir si j’ai des erreurs à corriger ou simplement les ressources qui vont être déployées . Une fois sûr je peux prendre l’option apply pour commencer le déploiement.
Terraform plan
Terraform apply

- On voit ici que 4 ressources vont être déployées . On valide donc par yes .

Le déploiement commence et se termine avec succès .

Sur le portail j’ai bien mon RG avec le nom et les tags que je voulais .

Pareil le Vnet a bien été déployé

Et enfin les deux subnets .

L’option destroy permet de nettoyer le déploiement .
terraform destroy

Le plan s’affiche toujour pour montrer le potentiel résultat de la commande .Ici je valide par yes pour supprimer les ressources.


De retour sur le portail on voit bien que le déploiement a bien été nettoyé impliquant la suppression du RG et de son contenu.

Merci de votre visite je vous mettrais les liens vers mon github pour les sources .
0 Comments