Terraform Concepts Overview
Terraform Concepts Overview
Liste tous les object, composant, architecture, fichier important, structure etc de Terraform liste le
plus de chose possible
Terraform est un outil d'infrastructure en tant que code (IaC) développé par HashiCorp. Il permet de
définir et de gérer une infrastructure à travers des fichiers de configuration. Voici une liste détaillée
des différents objets, composants, architectures, fichiers importants et structures associés à
Terraform :
Objets et Composants
1. Providers :
Fournissent les ressources spécifiques à une plateforme (AWS, Azure, GCP, etc.).
Exemples : `aws`, `azurerm`, `google`.
2. Resources :
Représentent les composants d'infrastructure.
Exemples : `aws_instance`, `azurerm_virtual_network`, `google_compute_instance`.
3. Data Sources :
Permettent de récupérer des informations sur l'infrastructure existante.
Exemples : `aws_ami`, `azurerm_resource_group`, `google_compute_network`.
4. Modules :
Groupes de ressources réutilisables.
Exemples : `VPC`, `EC2`, `IAM`.
5. Variables :
Permettent de passer des informations dans les fichiers de configuration.
Exemples : `variable "region" {}`, `variable "instance_type" {}`.
6. Outputs :
Permettent d'extraire des informations de l'infrastructure déployée.
Exemples : `output "instance_ip" {}`, `output "vpc_id" {}`.
7. Locals :
Définissent des valeurs locales utilisées dans le fichier de configuration.
Exemples : `locals { instance_count = 3 }`.
8. Provisioners :
Permettent d'exécuter des scripts ou des commandes après la création des ressources.
Exemples : `local-exec`, `remote-exec`.
9. Backend :
Stocke l'état des infrastructures.
Exemples : `local`, `remote`, `s3`, `gcs`, `azurerm`.
10. State Files :
Fichiers qui maintiennent l'état des infrastructures déployées.
Printed using Save ChatGPT as PDF, powered by PDFCrowd HTML to PDF API. 1/45
Exemples : `terraform.tfstate`, `terraform.tfstate.backup`.
Architecture et Structure
1. Fichiers de Configuration :
`main.tf` : Fichier principal de configuration.
`variables.tf` : Définit les variables utilisées.
`outputs.tf` : Définit les sorties.
`provider.tf` : Configure les fournisseurs.
`terraform.tfvars` : Fichier de valeurs de variables.
2. Dossiers et Modules :
`modules/` : Dossier contenant les modules réutilisables.
`module_name/` : Dossier pour chaque module avec ses propres `main.tf`, `variables.tf`,
`outputs.tf`.
3. Commandes Terraform :
`terraform init` : Initialisation du projet.
`terraform plan` : Planification des modifications.
`terraform apply` : Application des modifications.
`terraform destroy` : Destruction des ressources.
`terraform validate` : Validation des fichiers de configuration.
`terraform fmt` : Formatage des fichiers de configuration.
`terraform taint` : Marquage d'une ressource pour recréation.
4. Fichiers de Backend :
`backend.tf` : Fichier de configuration du backend.
Exemples : `backend "s3" {}`, `backend "gcs" {}`, `backend "azurerm" {}`.
1. Workspaces :
Permettent de gérer plusieurs environnements.
Commandes : `terraform workspace new`, `terraform workspace select`, `terraform
workspace list`.
2. Gestion des Secrets :
Utilisation de `vault`, `AWS Secrets Manager`, `Azure Key Vault`.
3. Structure de Répertoire Recommandée :
`project-root/`
`main.tf`
`variables.tf`
`outputs.tf`
`provider.tf`
`terraform.tfvars`
`modules/`
`module1/`
`module2/`
`environments/`
`dev/`
`prod/`
En résumé, Terraform offre une large gamme de composants et structures permettant de gérer
l'infrastructure de manière déclarative et automatisée. La clé est de bien organiser ses fichiers et
Printed using Save ChatGPT as PDF, powered by PDFCrowd HTML to PDF API. 2/45
modules pour maintenir une infrastructure propre et scalable.
Voici une explication détaillée pour chaque objet, composant, structure, etc., de Terraform. Pour
chaque élément, nous incluons la définition, comment l'utiliser, son emplacement dans l'architecture,
ses imbrications, les commandes, les options, des exemples de commandes et des exercices pratiques
avec corrections.
1. Providers
Définition
Les providers sont des plugins qui permettent à Terraform d'interagir avec des APIs pour provisionner
et gérer des ressources.
Utilisation
Imbrication
Commandes
`terraform init`
`terraform providers`
`terraform provider list`
Printed using Save ChatGPT as PDF, powered by PDFCrowd HTML to PDF API. 3/45
Options de Commandes
`version`
`alias`
`configuration_alias`
Exemple de Commande
hcl
provider "aws" {
region = "us-west-2"
version = "~> 3.0"
alias = "west"
}
Explication :
Exercice d'Entraînement
Correction
hcl
provider "aws" {
region = "us-east-1"
version = "~> 2.0"
alias = "east"
}
2. Resources
Définition
Les resources représentent des composants d'infrastructure comme des machines virtuelles, des
bases de données, etc.
Utilisation
On les définit dans les fichiers de configuration avec des arguments spécifiques.
Printed using Save ChatGPT as PDF, powered by PDFCrowd HTML to PDF API. 4/45
Les resources sont définies dans des fichiers comme `main.tf` ou d'autres fichiers spécifiques aux
resources.
Imbrication
Les resources sont imbriquées dans le fichier de configuration principal ou dans des modules.
Commandes
`terraform plan`
`terraform apply`
`terraform destroy`
Options de Commandes
`count`
`depends_on`
`lifecycle`
`provider`
Exemple de Commande
hcl
Explication :
Exercice d'Entraînement
Correction
hcl
Printed using Save ChatGPT as PDF, powered by PDFCrowd HTML to PDF API. 5/45
provider = aws.east
}
3. Data Sources
Définition
Les data sources permettent de récupérer des informations sur l'infrastructure existante.
Utilisation
On les définit avec des arguments spécifiques pour récupérer les données nécessaires.
Les data sources sont définies dans les fichiers de configuration comme `main.tf`.
Imbrication
Les data sources sont imbriquées dans le fichier de configuration principal ou dans des modules.
Commandes
`terraform plan`
`terraform apply`
`terraform refresh`
Options de Commandes
`filter`
`ids`
`tags`
Exemple de Commande
hcl
filter {
name = "name"
values = ["my-custom-ami-*"]
}
}
Explication :
Printed using Save ChatGPT as PDF, powered by PDFCrowd HTML to PDF API. 6/45
Exercice d'Entraînement
1. Créer une data source AWS VPC pour récupérer un VPC existant avec le tag `Name: my-vpc`.
2. Filtrer par région `us-west-2`.
Correction
hcl
filter {
name = "availability-zone"
values = ["us-west-2a"]
}
}
4. Modules
Définition
Utilisation
Imbrication
Les modules sont imbriqués dans le fichier principal avec des arguments spécifiques.
Commandes
`terraform get`
`terraform init`
`terraform plan`
`terraform apply`
Options de Commandes
`source`
`version`
`variables`
`outputs`
Printed using Save ChatGPT as PDF, powered by PDFCrowd HTML to PDF API. 7/45
Exemple de Commande
hcl
module "vpc" {
source = "./modules/vpc"
cidr_block = "10.0.0.0/16"
public_subnets = ["10.0.1.0/24", "10.0.2.0/24"]
}
Explication :
Exercice d'Entraînement
Correction
hcl
// modules/s3/main.tf
resource "aws_s3_bucket" "this" {
bucket = var.bucket_name
}
// main.tf
module "s3" {
source = "./modules/s3"
bucket_name = "my-bucket"
}
5. Variables
Définition
Les variables permettent de passer des informations dans les fichiers de configuration.
Utilisation
On les définit dans un fichier `variables.tf` et on les référence dans les fichiers principaux.
Imbrication
Printed using Save ChatGPT as PDF, powered by PDFCrowd HTML to PDF API. 8/45
Les variables sont imbriquées dans les fichiers de configuration et les modules.
Commandes
`terraform plan`
`terraform apply`
Options de Commandes
`type`
`default`
`description`
`validation`
`sensitive`
Exemple de Commande
hcl
variable "region" {
type = string
default = "us-west-2"
description = "The AWS region to deploy resources"
}
Explication :
Exercice d'Entraînement
Correction
hcl
variable "instance_type" {
type = string
default = "t2.micro"
description = "Instance type for EC2"
}
6. Outputs
Définition
Printed using Save ChatGPT as PDF, powered by PDFCrowd HTML to PDF API. 9/45
Les outputs permettent d'extraire des informations de l'infrastructure déployée.
Utilisation
On les définit dans un fichier `outputs.tf` et on les référence dans les fichiers principaux.
Imbrication
Les outputs sont imbriqués dans les fichiers de configuration principaux ou de modules.
Commandes
`terraform output`
`terraform apply`
Options de Commandes
`value`
`description`
`sensitive`
Exemple de Commande
hcl
output "instance_id" {
value = aws_instance.example.id
description = "The ID of the EC2 instance"
}
Explication :
Exercice d'Entraînement
1. Définir un output `instance_ip` pour extraire l'adresse IP publique d'une instance EC2.
2. Ajouter une description `Public IP of the instance`.
Correction
hcl
output "instance_ip" {
value = aws_instance.example.public_ip
Printed using Save ChatGPT as PDF, powered by PDFCrowd HTML to PDF API. 10/45
description = "Public IP of the instance"
}
7. Locals
Définition
Les locals définissent des valeurs locales utilisées dans le fichier de configuration.
Utilisation
On les définit avec des expressions spécifiques pour calculer des valeurs locales.
Imbrication
Les locals sont imbriqués dans les fichiers de configuration principaux ou de modules.
Commandes
`terraform plan`
`terraform apply`
Options de Commandes
`locals`
Exemple de Commande
hcl
locals {
instance_count = 3
}
Explication :
Exercice d'Entraînement
Correction
Printed using Save ChatGPT as PDF, powered by PDFCrowd HTML to PDF API. 11/45
hcl
locals {
cidr_block = "10.0.0.0/16"
}
8. Provisioners
Définition
Les provisioners permettent d'exécuter des scripts ou des commandes après la création des
ressources.
Utilisation
Les provisioners sont définis à l'intérieur des ressources dans les fichiers de configuration.
Imbrication
Commandes
`terraform apply`
Options de Commandes
`local-exec`
`remote-exec`
Exemple de Commande
hcl
provisioner "local-exec" {
command = "echo ${self.public_ip}"
}
}
Explication :
Printed using Save ChatGPT as PDF, powered by PDFCrowd HTML to PDF API. 12/45
`command` exécute une commande locale après la création de l'instance.
Exercice d'Entraînement
Correction
hcl
provisioner "remote-exec" {
inline = [
"sudo apt-get update",
"sudo apt-get install -y nginx"
]
}
}
9. Backend
Définition
Utilisation
Imbrication
Commandes
`terraform init`
Options de Commandes
`local`
`remote`
`s3`
`gcs`
`azurerm`
Printed using Save ChatGPT as PDF, powered by PDFCrowd HTML to PDF API. 13/45
Exemple de Commande
hcl
terraform {
backend "s3" {
bucket = "my-tfstate-bucket"
key = "global/s3/terraform.tfstate"
region = "us-west-2"
}
}
Explication :
Exercice d'Entraînement
Correction
hcl
terraform {
backend "s3" {
bucket = "terraform-state"
key = "global/s3/terraform.tfstate"
region = "us-east-1"
}
}
Définition
Utilisation
Imbrication
Printed using Save ChatGPT as PDF, powered by PDFCrowd HTML to PDF API. 14/45
Les state files ne sont pas imbriqués dans les fichiers de configuration mais sont référencés par
Terraform.
Commandes
Options de Commandes
`list`
`show`
`rm`
`mv`
Exemple de Commande
bash
Explication :
Exercice d'Entraînement
Correction
bash
Commandes
`terraform init`
`terraform plan`
`terraform apply`
`terraform destroy`
`terraform validate`
`terraform fmt`
Printed using Save ChatGPT as PDF, powered by PDFCrowd HTML to PDF API. 15/45
`terraform taint`
`terraform untaint`
`terraform refresh`
`terraform output`
Options de Commandes
`-input`
`-lock`
`-lock-timeout`
`-no-color`
`-var`
`-var-file`
`-parallelism`
`-refresh`
`-out`
`-target`
Exercice 1
Correction
bash
terraform init
# main.tf
provider "aws" {
region = "us-west-2"
}
Printed using Save ChatGPT as PDF, powered by PDFCrowd HTML to PDF API. 16/45
terraform plan -out=tfplan
terraform apply tfplan
Exercice 2
Correction
hcl
# variables.tf
variable "instance_type" {
type = string
default = "t2.micro"
description = "Instance type for EC2"
}
# main.tf
provider "aws" {
region = "us-west-2"
}
Exercice 3
Correction
hcl
# modules/s3/main.tf
resource "aws_s3_bucket" "this" {
bucket = var.bucket_name
}
variable "bucket_name" {
type = string
}
# main.tf
module "s3" {
source = "./modules/s3"
bucket_name = "my-bucket"
}
Printed using Save ChatGPT as PDF, powered by PDFCrowd HTML to PDF API. 17/45
terraform plan -out=tfplan
terraform apply tfplan
Exercice 4
Correction
hcl
# backend.tf
terraform {
backend "s3" {
bucket = "terraform-state"
key = "global/s3/terraform.tfstate"
region = "us-east-1"
}
}
terraform init
terraform plan -out=tfplan
terraform apply tfplan
Ces explications et exercices devraient couvrir une grande partie des concepts et des pratiques
courantes avec Terraform.
continue
11. Workspaces
Définition
Les workspaces permettent de gérer plusieurs environnements de manière isolée (par exemple,
développement, test, production).
Utilisation
Les workspaces sont gérés globalement par Terraform et influent sur la configuration et l'état des
ressources.
Printed using Save ChatGPT as PDF, powered by PDFCrowd HTML to PDF API. 18/45
Imbrication
Les workspaces ne sont pas imbriqués dans les fichiers de configuration, mais ils influencent quels
fichiers d'état et de configuration sont utilisés.
Commandes
Options de Commandes
`new`
`select`
`list`
`delete`
Exemple de Commande
bash
Explication :
Exercice d'Entraînement
Correction
bash
Définition
La gestion des secrets consiste à sécuriser les informations sensibles telles que les mots de passe, les
clés API, etc.
Printed using Save ChatGPT as PDF, powered by PDFCrowd HTML to PDF API. 19/45
Utilisation
On utilise des outils externes comme Vault, AWS Secrets Manager ou Azure Key Vault.
Les secrets sont gérés de manière externe et référencés dans les fichiers de configuration Terraform.
Imbrication
Les secrets sont intégrés via des références dans les fichiers de configuration.
Commandes
`terraform apply`
`terraform plan`
Intégration avec des outils de gestion des secrets.
Exemple de Commande
hcl
provider "aws" {
region = "us-west-2"
access_key = data.aws_secretsmanager_secret_version.example.secret_string
}
Explication :
Exercice d'Entraînement
Correction
hcl
provider "aws" {
region = "us-west-2"
access_key = data.aws_secretsmanager_secret_version.example.secret_string
}
Printed using Save ChatGPT as PDF, powered by PDFCrowd HTML to PDF API. 20/45
13. Fichiers de Configuration
Définition
Les fichiers de configuration sont des fichiers `.tf` qui contiennent le code Terraform pour définir
l'infrastructure.
Utilisation
On crée des fichiers `.tf` avec des blocs de configuration pour les providers, resources, variables,
outputs, etc.
Les fichiers de configuration sont généralement placés à la racine du projet ou dans des sous-dossiers
pour les modules.
Imbrication
Les différents blocs de configuration sont imbriqués dans ces fichiers selon leur type.
Commandes
`terraform plan`
`terraform apply`
`terraform fmt`
`terraform validate`
Options de Commandes
`plan`
`apply`
`fmt`
`validate`
Exemple de Commande
hcl
provider "aws" {
region = "us-west-2"
}
Explication :
Printed using Save ChatGPT as PDF, powered by PDFCrowd HTML to PDF API. 21/45
Exercice d'Entraînement
1. Créer un fichier `main.tf` avec une configuration pour une instance EC2.
2. Appliquer la configuration.
Correction
hcl
# main.tf
provider "aws" {
region = "us-west-2"
}
Définition
Les commandes Terraform sont utilisées pour initialiser, planifier, appliquer, détruire, valider et
formater les configurations.
Utilisation
Les commandes sont exécutées dans le répertoire où se trouvent les fichiers de configuration.
Imbrication
Les commandes sont exécutées en dehors des fichiers de configuration mais interagissent avec eux.
Commandes
`terraform init`
`terraform plan`
`terraform apply`
`terraform destroy`
`terraform validate`
`terraform fmt`
`terraform taint`
`terraform untaint`
`terraform refresh`
`terraform output`
Printed using Save ChatGPT as PDF, powered by PDFCrowd HTML to PDF API. 22/45
Options de Commandes
`-input`
`-lock`
`-lock-timeout`
`-no-color`
`-var`
`-var-file`
`-parallelism`
`-refresh`
`-out`
`-target`
Exemple de Commande
bash
Explication :
Exercice d'Entraînement
Correction
bash
terraform init
terraform plan -var 'region=us-west-2' -out=tfplan
terraform apply -auto-approve tfplan
Définition
Une structure de répertoire organisée est essentielle pour maintenir un projet Terraform propre et
modulaire.
Utilisation
Imbrication
Les fichiers et dossiers sont imbriqués selon leur rôle (modules, environnements, etc.).
css
project-root/
main.tf
variables.tf
outputs.tf
provider.tf
terraform.tfvars
modules/
vpc/
main.tf
variables.tf
outputs.tf
s3/
main.tf
variables.tf
outputs.tf
environments/
dev/
main.tf
variables.tf
outputs.tf
prod/
main.tf
variables.tf
outputs.tf
Explication :
Exercice d'Entraînement
1. Créer une structure de répertoire pour un projet Terraform avec un module VPC.
2. Définir les fichiers nécessaires dans chaque répertoire.
Correction
hcl
# project-root/main.tf
provider "aws" {
region = "us-west-2"
}
Printed using Save ChatGPT as PDF, powered by PDFCrowd HTML to PDF API. 24/45
module "vpc" {
source = "./modules/vpc"
cidr_block = "10.0.0.0/16"
}
# modules/vpc/main.tf
resource "aws_vpc" "this" {
cidr_block = var.cidr_block
}
# modules/vpc/variables.tf
variable "cidr_block" {
type = string
}
# modules/vpc/outputs.tf
output "vpc_id" {
value = aws_vpc.this.id
}
# environments/dev/main.tf
provider "aws" {
region = "us-west-2"
}
module "vpc" {
source = "../../modules/vpc"
cidr_block = "10.0.0.0/16"
}
Conclusion
Cette vue d'ensemble détaillée couvre les principaux objets, composants, et structures de Terraform.
En utilisant ces informations, on peut créer et gérer une infrastructure robuste et modulaire. Les
exercices pratiques fournissent une application concrète des concepts pour mieux comprendre leur
utilisation et leur implémentation.
continue
Définition
Utilisation
Elle doit être exécutée avant d'utiliser d'autres commandes Terraform dans un nouveau répertoire de
travail ou après avoir modifié les fichiers de configuration des providers.
Printed using Save ChatGPT as PDF, powered by PDFCrowd HTML to PDF API. 25/45
Emplacement dans l'Architecture
Cette commande est exécutée au niveau du répertoire de travail pour préparer Terraform à exécuter
des configurations.
Imbrication
`terraform init` est exécuté au niveau du répertoire de travail et influence l'ensemble des fichiers de
configuration présents dans ce répertoire.
Options de Commandes
`-input`
`-lock`
`-lock-timeout`
`-no-color`
`-backend`
`-backend-config`
`-get`
`-upgrade`
Exemple de Commande
bash
Explication :
Exercice d'Entraînement
1. Initialiser un répertoire de travail Terraform avec une configuration backend stockée dans un
fichier `backend.tf`.
Correction
bash
Définition
La commande `terraform plan` crée un plan d'exécution montrant ce que Terraform va faire pour
atteindre l'état souhaité de la configuration.
Printed using Save ChatGPT as PDF, powered by PDFCrowd HTML to PDF API. 26/45
Utilisation
`terraform plan` est exécuté au niveau du répertoire de travail et prend en compte tous les fichiers de
configuration dans ce répertoire.
Imbrication
Elle interagit avec tous les fichiers de configuration et les variables pour créer un plan d'exécution.
Options de Commandes
`-input`
`-lock`
`-lock-timeout`
`-no-color`
`-out`
`-refresh`
`-var`
`-var-file`
Exemple de Commande
bash
Explication :
Crée un plan d'exécution avec la variable `region` spécifiée et stocke le plan dans un fichier
`tfplan`.
Exercice d'Entraînement
Correction
bash
Printed using Save ChatGPT as PDF, powered by PDFCrowd HTML to PDF API. 27/45
Définition
La commande `terraform apply` applique les modifications nécessaires pour atteindre l'état souhaité
de la configuration.
Utilisation
`terraform apply` est exécuté au niveau du répertoire de travail et applique les modifications décrites
dans les fichiers de configuration.
Imbrication
Elle utilise le plan d'exécution créé par `terraform plan` pour modifier l'infrastructure.
Options de Commandes
`-auto-approve`
`-backup`
`-input`
`-lock`
`-lock-timeout`
`-no-color`
`-parallelism`
`-refresh`
`-state`
`-state-out`
`-target`
`-var`
`-var-file`
Exemple de Commande
bash
Explication :
Applique les modifications sans demander de confirmation en utilisant le plan stocké dans
`myplan`.
Exercice d'Entraînement
1. Appliquer un plan Terraform stocké dans un fichier `myplan` sans demander de confirmation.
Correction
Printed using Save ChatGPT as PDF, powered by PDFCrowd HTML to PDF API. 28/45
bash
Définition
La commande `terraform destroy` détruit toutes les ressources gérées par la configuration Terraform.
Utilisation
`terraform destroy` est exécuté au niveau du répertoire de travail et affecte toutes les ressources
décrites dans les fichiers de configuration.
Imbrication
Elle supprime toutes les ressources gérées par Terraform en utilisant les fichiers de configuration
actuels.
Options de Commandes
`-auto-approve`
`-backup`
`-lock`
`-lock-timeout`
`-no-color`
`-parallelism`
`-refresh`
`-state`
`-state-out`
`-target`
`-var`
`-var-file`
Exemple de Commande
bash
Explication :
Printed using Save ChatGPT as PDF, powered by PDFCrowd HTML to PDF API. 29/45
Exercice d'Entraînement
Correction
bash
Définition
La commande `terraform validate` valide les fichiers de configuration Terraform pour vérifier s'ils
sont syntaxiquement corrects et cohérents.
Utilisation
On l'utilise pour s'assurer que les fichiers de configuration sont corrects avant de planifier ou
d'appliquer des modifications.
Imbrication
Options de Commandes
`-json`
`-no-color`
Exemple de Commande
bash
terraform validate
Explication :
Exercice d'Entraînement
Printed using Save ChatGPT as PDF, powered by PDFCrowd HTML to PDF API. 30/45
Correction
bash
terraform validate
Définition
La commande `terraform fmt` formate les fichiers de configuration Terraform pour qu'ils respectent
le style de codage standard.
Utilisation
`terraform fmt` est exécuté au niveau du répertoire de travail et formate tous les fichiers `.tf`.
Imbrication
Options de Commandes
`-list`
`-write`
`-diff`
`-check`
`-recursive`
Exemple de Commande
bash
Explication :
Formate tous les fichiers `.tf` dans le répertoire de travail et ses sous-répertoires.
Exercice d'Entraînement
1. Formater tous les fichiers de configuration Terraform dans le répertoire de travail et ses sous-
répertoires.
Printed using Save ChatGPT as PDF, powered by PDFCrowd HTML to PDF API. 31/45
Correction
bash
Définition
La commande `terraform taint` marque une ressource pour qu'elle soit recréée lors du prochain
`terraform apply`.
Utilisation
`terraform taint` est exécuté au niveau du répertoire de travail et affecte une ressource spécifique.
Imbrication
Options de Commandes
Exemple de Commande
bash
Explication :
Exercice d'Entraînement
Correction
Printed using Save ChatGPT as PDF, powered by PDFCrowd HTML to PDF API. 32/45
bash
Définition
Utilisation
`terraform untaint` est exécuté au niveau du répertoire de travail et affecte une ressource spécifique.
Imbrication
Options de Commandes
Exemple de Commande
bash
Explication :
Exercice d'Entraînement
Correction
bash
Printed using Save ChatGPT as PDF, powered by PDFCrowd HTML to PDF API. 33/45
24. Commande `terraform refresh`
Définition
La commande `terraform refresh` met à jour le fichier d'état Terraform avec les valeurs actuelles des
ressources.
Utilisation
Imbrication
Elle met à jour l'état de toutes les ressources gérées par Terraform.
Options de Commandes
`-input`
`-lock`
`-lock-timeout`
`-no-color`
`-parallelism`
`-state`
`-target`
`-var`
`-var-file`
Exemple de Commande
bash
terraform refresh
Explication :
Met à jour le fichier d'état avec les valeurs actuelles des ressources.
Exercice d'Entraînement
1. Mettre à jour le fichier d'état Terraform avec les valeurs actuelles des ressources.
Correction
Printed using Save ChatGPT as PDF, powered by PDFCrowd HTML to PDF API. 34/45
bash
terraform refresh
Définition
La commande `terraform output` affiche les valeurs des outputs définis dans les fichiers de
configuration Terraform.
Utilisation
Imbrication
Elle affiche les valeurs des outputs définis dans les fichiers de configuration.
Options de Commandes
`-json`
`-state`
Exemple de Commande
bash
Explication :
Exercice d'Entraînement
Correction
Printed using Save ChatGPT as PDF, powered by PDFCrowd HTML to PDF API. 35/45
bash
Conclusion
Cette suite d'exercices et de descriptions détaillées couvre l'utilisation complète de Terraform, des
concepts de base aux commandes avancées. En suivant ces étapes et en pratiquant les exercices, on
peut acquérir une compréhension approfondie et pratique de Terraform, facilitant ainsi la gestion et
l'automatisation de l'infrastructure en tant que code.
continue
Définition
Un backend dans Terraform est une configuration qui définit où et comment l'état Terraform est
stocké. Les backends peuvent être locaux ou distants, ce qui permet de partager l'état entre plusieurs
utilisateurs et environnements.
Utilisation
On les configure dans un bloc `terraform { ... }` généralement dans un fichier `backend.tf`.
Les backends sont définis au niveau du projet dans un fichier de configuration global.
Imbrication
Les backends sont imbriqués dans le bloc `terraform` des fichiers de configuration globaux.
Commandes
`terraform init`
Options de Commandes
Printed using Save ChatGPT as PDF, powered by PDFCrowd HTML to PDF API. 36/45
`project`, `credentials`, `bucket`, `prefix` (pour `gcs`)
Exemple de Commande
hcl
terraform {
backend "s3" {
bucket = "my-terraform-state"
key = "path/to/my/key"
region = "us-west-2"
}
}
Explication :
Exercice d'Entraînement
Correction
hcl
# backend.tf
terraform {
backend "local" {
path = "terraform.tfstate"
}
}
# Commande d'initialisation
terraform init
Définition
Le verrouillage d'état empêche plusieurs utilisateurs de modifier simultanément l'état, ce qui pourrait
entraîner des corruptions d'état.
Utilisation
Le verrouillage est souvent automatique, géré par le backend utilisé (par exemple, S3 avec DynamoDB
pour le verrouillage).
Printed using Save ChatGPT as PDF, powered by PDFCrowd HTML to PDF API. 37/45
Imbrication
Les options de verrouillage peuvent être spécifiées dans la configuration du backend ou via des
options de commande.
Commandes
`terraform init`
`terraform plan`
`terraform apply`
Options de Commandes
`-lock`
`-lock-timeout`
Exemple de Commande
bash
Explication :
Applique les modifications en activant le verrouillage avec un délai d'attente de 300 secondes.
Exercice d'Entraînement
Correction
hcl
# backend.tf
terraform {
backend "s3" {
bucket = "my-terraform-state"
key = "path/to/my/key"
region = "us-west-2"
dynamodb_table = "terraform-locks"
}
}
# Commande d'application
terraform apply -lock=true -lock-timeout=300s
Définition
Printed using Save ChatGPT as PDF, powered by PDFCrowd HTML to PDF API. 38/45
L'état distant permet de stocker et de partager l'état Terraform dans un emplacement centralisé,
facilitant la collaboration entre équipes.
Utilisation
L'état distant est géré au niveau du projet et configuré dans les fichiers de configuration globaux.
Imbrication
L'état distant est configuré dans le bloc `terraform` des fichiers de configuration globaux.
Commandes
`terraform init`
Options de Commandes
Exemple de Commande
hcl
terraform {
backend "gcs" {
bucket = "my-terraform-state"
prefix = "terraform/state"
}
}
Explication :
Exercice d'Entraînement
Correction
hcl
# backend.tf
terraform {
backend "gcs" {
bucket = "my-terraform-state"
prefix = "terraform/state"
}
Printed using Save ChatGPT as PDF, powered by PDFCrowd HTML to PDF API. 39/45
}
# Commande d'initialisation
terraform init
Définition
La commande `terraform import` permet d'importer des ressources existantes dans le fichier d'état
Terraform.
Utilisation
On l'utilise pour inclure des ressources créées en dehors de Terraform dans la gestion de Terraform.
Imbrication
Commandes
`terraform import`
Options de Commandes
Aucune option spécifique, mais nécessite des arguments pour spécifier la ressource et son ID.
Exemple de Commande
bash
Explication :
Importe une instance EC2 existante dans Terraform en utilisant son ID.
Exercice d'Entraînement
Correction
Printed using Save ChatGPT as PDF, powered by PDFCrowd HTML to PDF API. 40/45
bash
Définition
Utilisation
Imbrication
Elle génère un graphe pour les ressources définies dans les fichiers de configuration.
Commandes
`terraform graph`
Options de Commandes
`-draw-cycles`
Exemple de Commande
bash
Explication :
Exercice d'Entraînement
Correction
Printed using Save ChatGPT as PDF, powered by PDFCrowd HTML to PDF API. 41/45
bash
Définition
Utilisation
On l'utilise pour lister, montrer, déplacer, et supprimer des ressources dans l'état Terraform.
Imbrication
Commandes
Options de Commandes
`list`
`show`
`mv`
`rm`
Exemple de Commande
bash
Explication :
Exercice d'Entraînement
Printed using Save ChatGPT as PDF, powered by PDFCrowd HTML to PDF API. 42/45
1. Lister toutes les ressources dans l'état Terraform.
2. Afficher les détails d'une ressource spécifique.
Correction
bash
Définition
La commande `terraform refresh` met à jour le fichier d'état Terraform avec les valeurs actuelles des
ressources.
Utilisation
Imbrication
Elle met à jour l'état de toutes les ressources gérées par Terraform.
Commandes
`terraform refresh`
Options de Commandes
`-input`
`-lock`
`-lock-timeout`
`-no-color`
`-parallelism`
`-state`
`-target`
`-var`
`-var-file`
Exemple de Commande
Printed using Save ChatGPT as PDF, powered by PDFCrowd HTML to PDF API. 43/45
bash
terraform refresh
Explication :
Met à jour le fichier d'état avec les valeurs actuelles des ressources.
Exercice d'Entraînement
1. Mettre à jour le fichier d'état Terraform avec les valeurs actuelles des ressources.
Correction
bash
terraform refresh
Définition
La commande `terraform output` affiche les valeurs des outputs définis dans les fichiers de
configuration Terraform.
Utilisation
Imbrication
Elle affiche les valeurs des outputs définis dans les fichiers de configuration.
Commandes
`terraform output`
Options de Commandes
`-json`
`-state`
Exemple de Commande
Printed using Save ChatGPT as PDF, powered by PDFCrowd HTML to PDF API. 44/45
bash
Explication :
Exercice d'Entraînement
Correction
bash
Conclusion
Cette vue d'ensemble détaillée couvre l'utilisation complète de Terraform, des concepts de base aux
commandes avancées. En suivant ces étapes et en pratiquant les exercices, on peut acquérir une
compréhension approfondie et pratique de Terraform, facilitant ainsi la gestion et l'automatisation de
l'infrastructure en tant que code.
ChatGPT peut faire des erreurs. Envisagez de vérifier les informations importantes.
Printed using Save ChatGPT as PDF, powered by PDFCrowd HTML to PDF API. 45/45