Concepts
- IaC = Infrastructure as Code
- Décrire son infrastructure avec du code
- Fichier .tf
- Modulaire
- Fonctionne avec un state interne
Glossaires
- Providers
- Permet d'interagir avec des API (cloud)
- Ressources
- Décrire un objet d'infrastructure (Lambda, S3 buckets, etc)
- Data sources
- Permet d'obtenir des informations d'une ressource externe à Terraform
Provider
terraform {
required_providers {
aws = {
source = "hashicorp/aws"
version = "3.75.2"
}
}
}
provider "aws" {
region = "eu-west-1"
}
Ressource
resource "aws_lambda_function" "my_lambda" {
filename = "myLambda.zip"#Le zip contenant le code source
function_name = "myLambda" #Le nom de la fonction dans AWS
handler = "report.Reports"# = nomDuFicher.nomDeLaMethode
source_code_hash = filebase64sha256("myLambda.zip")
runtime = "nodejs16.x"
memory_size = 1024
timeout = 900
environment {}
}
Data
data "aws_ami" "example" {
most_recent = true
owners = ["self"]
tags = {
Name = "app-server"
Tested = "true"
}
}
CLI (1/2)
- terraform init
- Initialise un workspace terraform
- terraform validate
- Valide les fichiers TF, via la syntaxe et la cohérence mais ne fait aucun appel réseau
- terraform plan
- Permet de connaitre les changements qui vont être appliqué sur l'infra par Terraform
CLI (2/2)
- terraform apply
- Permet appliquer les changements sur l'infra
- terraform import
- Permet d'importer dans le state une ressource déjà créé