Ce depot est un support de formation progressif pour apprendre Terraform avec AWS, LocalStack et plusieurs providers avancés. Chaque module combine de la theorie, des exemples HCL, et quand c'est pertinent des scripts de lab pour Linux/Mac et Windows.
| Outil | Version | Usage |
|---|---|---|
| Terraform | >= 1.5 | Executer, formater, valider et planifier l'infrastructure |
| Git | >= 2.0 | Cloner le depot et travailler avec GitHub |
| Docker | >= 20.0 | Lancer LocalStack et les labs Docker |
| LocalStack | >= 4.0 | Simuler AWS en local pour les labs |
| AWS CLI | >= 2.0 | Optionnel pour interagir avec AWS |
| TFLint | Derniere stable | Linter Terraform et provider AWS |
| Checkov | Derniere stable | Scanner la securite IaC |
| kubectl | >= 1.28 | Labs Kubernetes |
| minikube | >= 1.30 | Labs Kubernetes locaux |
| Ansible | >= 2.15 | Lab de provisioning avance |
Les labs AWS utilisent majoritairement LocalStack. Aucun credential reel ne doit etre stocke dans le code.
pip install localstack awscli-local
export SERVICES=ec2,s3,iam,sts
localstack start -d
curl http://localhost:4566/_localstack/health| Module | Titre | Description |
|---|---|---|
| 00 | Terraform Basics | Introduction a l'IaC, au workflow Terraform et aux providers. |
| 01 | Terraform Installation | Installation de Terraform sur Windows, macOS et Linux. |
| 02 | Terraform Architecture | Vue interne de Terraform Core, providers, state et graph engine. |
| 03 | Terraform Terminologies | Glossaire des concepts cles Terraform. |
| 04 | Top-Level Blocks | Les blocs HCL principaux : provider, resource, variable, output, data et module. |
| 05 | Terraform Commands | Commandes CLI essentielles : init, fmt, validate, plan, apply, destroy et state. |
| 06 | VPC Demo | Premier lab AWS/LocalStack autour d'un VPC. |
| 07 | Terraform Resources | Syntaxe des resources et cycle de vie Terraform. |
| 08 | Meta-Arguments | count, for_each, depends_on, provider et lifecycle. |
| 09 | Terraform Variables | Types de variables, tfvars, validation et valeurs sensibles. |
| 10 | Terraform Outputs | Outputs, valeurs sensibles et partage de donnees. |
| 11 | Data Sources | Lire des informations existantes avec les data sources. |
| 12 | Terraform State | State local, remote state, backend S3 et verrouillage. |
| 13 | Terraform Show | Inspecter le state et les plans Terraform. |
| 14 | Terraform Refresh | Synchroniser le state et detecter le drift. |
| 15 | State Commands | Manipuler le state avec list, show, mv, rm, pull et push. |
| 16 | Workspaces | Gerer plusieurs environnements avec terraform.workspace. |
| 17 | Terraform Modules | Composer des modules locaux VPC, EC2 et S3. |
| 18 | Terraform Import | Importer une infrastructure existante dans le state. |
| 19 | Debug & Logs | Utiliser TF_LOG et TF_LOG_PATH pour diagnostiquer Terraform. |
| 20 | Provisioners | local-exec, file, remote-exec et nettoyage. |
| 21 | Exam Cheat Sheet | Aide-memoire pour la certification Terraform Associate. |
| 22 | Example Codes | Cas pratiques avec local, LocalStack, Docker, Kubernetes et Ansible. |
| 23 | Terraform Tooling | Qualite et securite avec fmt, validate, tflint et checkov. |
Le workflow GitHub Actions est defini dans .github/workflows/terraform-ci.yml et se declenche sur les pull requests vers main.
Le pipeline contient cinq jobs :
| Job | Role |
|---|---|
fmt-check |
Execute terraform fmt -check -recursive. |
validate |
Execute terraform init -backend=false puis terraform validate dans les dossiers Terraform. |
tflint |
Initialise TFLint puis lance le lint Terraform. |
checkov |
Scanne le depot avec checkov -d . --framework terraform. |
plan |
Execute terraform plan apres succes des jobs precedents. |
Le job plan utilise les secrets GitHub AWS_ACCESS_KEY_ID et AWS_SECRET_ACCESS_KEY comme variables d'environnement. Ces credentials ne doivent jamais etre commits.
Installez ces outils avant de lancer le module 23 ou le pipeline localement :
terraform version
tflint --version
checkov --versionCommandes utiles :
terraform fmt -recursive
terraform validate
tflint --init && tflint
checkov -d . --framework terraformgit clone https://github.com/bejaouibechir/terraform.git
cd terraform
cd 06-Terraform-VPC-Demo
terraform init
terraform plan
terraform apply -auto-approve
terraform destroy -auto-approveChaque module avec lab fournit :
chmod +x lab-script.sh
./lab-script.shSous PowerShell :
.\lab-script.ps1| Ressource | Lien |
|---|---|
| Documentation Terraform | https://developer.hashicorp.com/terraform/docs |
| Terraform Registry | https://registry.terraform.io |
| Certification Associate | https://developer.hashicorp.com/certifications/infrastructure-automation |
| AWS Provider Docs | https://registry.terraform.io/providers/hashicorp/aws/latest/docs |
| Terraform Tutorials | https://developer.hashicorp.com/terraform/tutorials |