L’Infrastructure as Code (IaC) a fondamentalement change la facon dont nous gerons l’infrastructure informatique. Au lieu de cliquer manuellement dans les consoles web pour creer des serveurs, Terraform vous permet de definir toute votre infrastructure en code lisible par l’humain, versionnable et automatisable.
Installation de Terraform
Linux (Ubuntu/Debian)
wget -O- https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list
sudo apt update && sudo apt install terraform -y
Concepts Fondamentaux
Providers
terraform {
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 5.0"
}
}
}
provider "aws" {
region = "us-east-1"
}
Ressources
resource "aws_instance" "web_server" {
ami = "ami-0c55b159cbfafe1f0"
instance_type = "t3.micro"
tags = {
Name = "serveur-web"
}
}
Variables
variable "instance_type" {
description = "Type d'instance EC2"
type = string
default = "t3.micro"
}
Outputs
output "instance_public_ip" {
description = "L'adresse IP publique du serveur web"
value = aws_instance.web_server.public_ip
}
Le Flux de Travail Terraform
terraform init # Initialiser le repertoire de travail
terraform plan # Previsualiser les changements
terraform apply # Appliquer les changements
terraform destroy # Detruire l'infrastructure
Meilleures Pratiques
- Toujours executer
terraform planavantterraform apply - Utiliser l’etat distant avec verrouillage pour la collaboration en equipe
- Utiliser des modules pour organiser et reutiliser les configurations
- Ne jamais committer de secrets dans vos fichiers Terraform
- Utiliser
terraform fmtpour formater votre code
Conclusion
Terraform est un outil puissant qui apporte les principes de l’ingenierie logicielle a la gestion d’infrastructure. En definissant votre infrastructure comme code, vous gagnez en reproductibilite, collaboration et capacites d’automatisation que la configuration manuelle ne peut jamais atteindre.