Providers et ressources 18 min de lecture

Ressources et data sources

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.