TP 5 : Les modules Terraform
Objectif
Section intitulée « Objectif »Créer et utiliser des modules Terraform réutilisables.
Ce TP permet de voir comment :
- structurer un projet Terraform avec des modules
- définir les fichiers
main.tf,variables.tfetoutputs.tfd’un module - appeler un module depuis un projet parent
- passer des variables et récupérer des outputs de module
Prérequis
Section intitulée « Prérequis »- Terraform installé
- LocalStack installé et lancé (pour simuler AWS localement)
terraform versiondocker run --rm -p 4566:4566 localstack/localstack &Création d’un module Terraform
Section intitulée « Création d’un module Terraform »Créez un dossier pour votre module :
mkdir -p terraform/modules/instancecd terraform/modules/instanceAjoutez les fichiers nécessaires :
main.tf: définit les ressources du module.variables.tf: définit les variables d’entrée.outputs.tf: définit les valeurs de sortie.
main.tf (création d’une instance AWS EC2) :
resource "aws_instance" "example" { ami = var.ami instance_type = var.instance_type}variables.tf :
variable "ami" { description = "ID de l'AMI" type = string}
variable "instance_type" { description = "Type de l'instance" type = string default = "t2.micro"}outputs.tf :
output "instance_id" { description = "ID de l'instance EC2" value = aws_instance.example.id}Utilisation du module dans un projet Terraform
Section intitulée « Utilisation du module dans un projet Terraform »Créez un projet Terraform parent :
cd ../../mkdir projet-terraformcd projet-terraformAjoutez un fichier main.tf et appelez le module :
provider "aws" { region = "us-east-2" access_key = "test" secret_key = "test" skip_credentials_validation = true skip_metadata_api_check = true skip_requesting_account_id = true
endpoints { ec2 = "http://localhost:4566" }}
module "instance" { source = "../modules/instance" ami = "ami-12345678" instance_type = "t3.micro"}
output "instance_module" { value = module.instance}Initialisez et appliquez Terraform :
terraform initterraform apply -auto-approveVérifiez les sorties :
terraform outputBonus : Ajoutez d’autres ressources dans votre module, comme un groupe de sécurité ou un volume EBS.
Nettoyage des ressources
Section intitulée « Nettoyage des ressources »terraform destroy -auto-approverm -rf .terraform terraform.tfstate*