Outils & IaC
"Friends don't let friends ClickOps". Automatisation, gestion d'état et workflows modernes.
Terraform
Le standard déclaratif. Providers, Modules, State Management.
Ansible
Gestion de configuration. Agentless, Playbooks YAML, Idempotence.
Pulumi & CDK
Infrastructure as Software. Utiliser Python/TS pour créer l'infra.
GitOps
ArgoCD & Flux. Git comme source unique de vérité pour K8s.
CLI & SDKs
Automatisation impérative. Bash, Boto3, Azure SDK.
Secrets & State
Locking, Remote Backend, Vault, Drift Detection.
Terraform / OpenTofu
Le Paradigme Déclaratif
Vous décrivez l'état désiré ("Je veux 3 serveurs"), Terraform calcule comment y arriver.
Structure d'un projet
main.tf: Définition des ressources.variables.tf: Inputs (ex: region, instance_size).outputs.tf: Valeurs retournées (ex: IP de la VM créée).terraform.tfstate: CRITIQUE. Mappe votre code aux ressources réelles. à stocker en remote (S3).
| Commande | Action | Danger |
|---|---|---|
terraform init | Télécharge les providers et configure le backend. | Aucun. |
terraform plan | Compare l'état local vs l'état réel (Dry Run). | Aucun (Read-only). |
terraform apply | ExĂ©cute les changements API. | ĂlevĂ© (Peut dĂ©truire la prod). |
terraform destroy | Supprime TOUTES les ressources. | Critique. |
terraform plan -out=tfplan pour sauvegarder le plan et ĂȘtre sĂ»r d'appliquer exactement ce que vous avez validĂ©.Ansible (Config Management)
Pourquoi Ansible ?
- Agentless : Pas besoin d'installer de logiciel sur les serveurs cibles. Utilise SSH (Linux) ou WinRM (Windows).
- Impératif mais Idempotent : Exécute des tùches séquentiellement, mais ne fait rien si l'état est déjà correct.
- Usage : Idéal pour configurer l'intérieur des VM (install Nginx, update OS) aprÚs que Terraform les ait créées.
Modern IaC : Pulumi & CDK
HCL (Terraform) est un langage de configuration. Pulumi et CDK utilisent de vrais langages de programmation (Python, TS, Go).
| Caractéristique | Terraform (HCL) | Pulumi / CDK (Python/TS) |
|---|---|---|
| Logique | Limitée (count, for_each). | ComplÚte (boucles for, if/else, classes, fonctions). |
| Abstraction | Modules. | Classes & Packages standards (npm, pip). |
| Testing | Complexe (Terratest). | Natif (Unit tests standard). |
| Courbe d'apprentissage | Faible (facile à lire). | Moyenne (nécessite skills dev). |
GitOps (ArgoCD / Flux)
Le Pull Model vs Push Model
En CI/CD classique (Jenkins/GitLab), le pipeline pousse les changements (kubectl apply). En GitOps, un agent dans le cluster tire les changements depuis Git.
- Drift Detection : Si quelqu'un modifie le cluster manuellement (kubectl), ArgoCD le détecte et annule le changement (Self-healing).
- Sécurité : Le cluster n'a pas besoin de donner ses credentials au serveur CI/CD.
Scripting & SDKs
Parfois, IaC est trop lourd. Pour des tĂąches ponctuelles ou des automations complexes, on scripte.
Bash & CLI
Rapide, idéal pour les pipelines CI simples.
Python (Boto3)
Pour la logique complexe, les boucles, le try/except.
State & Secrets Best Practices
Remote State & Locking
Ne jamais stocker terraform.tfstate sur son PC ou dans Git !
- Backend S3 : Stockage centralisé et chiffré.
- DynamoDB Locking : EmpĂȘche deux devs de lancer
terraform applyen mĂȘme temps (corruption de state).
Gestion des Secrets
Ne jamais commiter de mots de passe dans le code IaC.
- Utiliser
aws_secretsmanager_secretdata source. - Passer les secrets via variables d'environnement (
TF_VAR_db_password). - Utiliser git-secrets ou trufflehog pour scanner les commits.
