Infrastructure as Code (IaC)
Un constat
- ⏳ Fastidieux
- 🐇 Réplication ?
- 📚 Versionnable ?
- 🎼 Orchestration ?
- 🤔 Ai-je bien tout éteint ?
Infrastructure as Code
L'Infrastructure as Code (IaC) consiste à
définir son architecture informatique comme du code. Au lieu de
naviguer sur une interface, les services à déployer seront définis
dans des fichiers via un langage spécifique. Ce code pourra ainsi
être versionné et redéployé à l'infini.
- Terraform/Open Tofu (cross plateforme)
- Amazon Cloud Formation, Amazon Serverless Application Manager
- Azure Resource Manager
- Google Cloud Deployment Manager
Terraform/Open Tofu
- Projet propriétaire crée par HashiCorp (acheté par IBM en 2025), Open Tofu fork open source
- Langage de configuration (HCL)/CDK pour code
- Terraform provider pour traduction
- Utilise les API des différents systèmes
Configuration language vs CDKTF
- HashiCorp Configuration Language (HCL) : pas JSON ni YAML
(existe une version json)
- CDKTF : bibliothèques pour coder son architecture dans son
langage de prédilection
Le CDKTF est lourd à mettre en place, on va utiliser le HCL
CDKTF
Exemple
provider "aws" {
region = "us-east-1"
}
# Création de l'instance EC2
resource "aws_instance" "ubuntu_vm" {
ami = "ami-01456a894f71116f2"
instance_type = "t2.micro"
root_block_device {
volume_size = 8
volume_type = "gp3"
}
tags = {
Name = "ubuntu-tf-instance"
}
}
Plus qu'a faire un "tofu apply" pour déployer l'architecture
Exemple
provider "aws" {}
resource "aws_security_group" "web_sg" {}
resource "aws_launch_template" "ubuntu_template" {}
resource "aws_autoscaling_group" "web_asg" {}
resource "aws_lb" "web_alb" {}
resource "aws_lb_target_group" "web_tg" {}
resource "aws_lb_listener" "http_listener" {}
In a nutshell 🥜
- Format déclaratif
- On doit décrire toute l'infra précisement
- Un élément se déclare de la forme type objet nom
- Possible d'appeler les objet les uns les autres
Il y a toute la doc sur internet !
Open Tofu : TP 2 - Prise en main
Ce que vous allez faire
- Terminer le TP 1 si ce n'est pas fait
- Refaire le TP 1 en utilisant open tofu