Les ressources (resource)
Une resource represente un objet d'infrastructure que Terraform cree et gere.
# Creer un serveur EC2
resource "aws_instance" "web" {
ami = "ami-0c55b159cbfafe1f0"
instance_type = "t2.micro"
tags = {
Name = "serveur-web"
Environment = "dev"
}
}
# Creer un groupe de securite
resource "aws_security_group" "web_sg" {
name = "web-sg"
description = "Autorise HTTP et SSH"
ingress {
from_port = 80
to_port = 80
protocol = "tcp"
cidr_blocks = ["0.0.0.0/0"]
}
ingress {
from_port = 22
to_port = 22
protocol = "tcp"
cidr_blocks = ["10.0.0.0/8"]
}
}
Les data sources (data)
Un data source permet de lire des informations existantes sans les modifier.
# Lire l'AMI la plus recente Ubuntu
data "aws_ami" "ubuntu" {
most_recent = true
owners = ["099720109477"] # Canonical
filter {
name = "name"
values = ["ubuntu/images/hvm-ssd/ubuntu-jammy-22.04-amd64-server-*"]
}
}
# Utiliser la data source dans une resource
resource "aws_instance" "web" {
ami = data.aws_ami.ubuntu.id
instance_type = "t2.micro"
}
References entre ressources
# Les ressources peuvent se referencer entre elles
resource "aws_instance" "web" {
ami = data.aws_ami.ubuntu.id
instance_type = "t2.micro"
vpc_security_group_ids = [aws_security_group.web_sg.id]
}
Regle :
resource = Terraform gere le cycle de vie (creation, mise a jour, suppression). data = lecture seule d'une ressource existante.