Surveiller l'écart entre l'état déclaré et l'état réel de votre infrastructure
| modification manuelle | conséquence | solution |
|---|---|---|
| Règle pare-feu ajoutée | Port ouvert → vulnérabilité | terraform plan |
| Scaling manuel non reporté | Déploiement redimensionne → panne | Surveillance continue |
| Config serveur modifiée | Système imprévisible | ansible --check |
L'agent surveille et alerte. Vous gardez le contrôle sur les décisions.
| aspect | terraform | ansible |
|---|---|---|
| Commande | terraform plan -detailed-exitcode |
ansible-playbook --check --diff |
| Indicateur | Exit code = 2 | changed > 0 |
| Scope | Ressources cloud (VM, réseau) | Config serveur (packages, fichiers) |
| State | Fichier tfstate externe | Pas de state (idempotence) |
resource "aws_security_group" "example" { name = "example-sg" ingress { from_port = 22 to_port = 22 protocol = "tcp" cidr_blocks = ["192.168.1.0/24"] } }
~ resource "aws_security_group" "example" { ~ ingress = [ + { + cidr_blocks = ["0.0.0.0/0"] + description = "Temp rule added from console" + from_port = 80 + to_port = 80 }, ] } Plan: 0 to add, 1 to change, 0 to destroy.
~ = ressource modifiée en dehors de Terraform+ = règle ajoutée manuellement (port 80, 0.0.0.0/0)$ ansible-playbook -i inventory/prod.ini webserver.yml --check --diff
TASK [Configure Nginx] ****
--- before: /etc/nginx/nginx.conf
+++ after: /etc/nginx/nginx.conf
@@ -12,7 +12,6 @@
server {
- add_header X-Custom-Header "manual-change";
location / {
changed: [web01.example.com]
PLAY RECAP ****
web01.example.com : ok=5 changed=1
changed=1 = dérive détectée sur 1 tâche| erreur | bonne pratique |
|---|---|
| Corriger automatiquement tous les drifts | Analyser avant d'agir (certains sont légitimes) |
| Ignorer les alertes de drift | Traiter chaque alerte, ajuster les seuils |
| State local sans locking | Backend distant obligatoire (S3, GCS) |
| Permissions console ouvertes | IaC = seule voie autorisée |
| risque | mitigation |
|---|---|
| State exposé Secrets en clair dans tfstate |
Backend chiffré (S3 + KMS) Jamais commiter .tfstate |
| ClickOps Modifications manuelles en console |
Principe d'infrastructure immuable Console en read-only |
| Agent sur-privilégié Permissions trop larges |
RBAC strict Accès Just-in-Time |
Ces outils complètent terraform plan et ansible --check pour des cas avancés.
À valider avant de mettre en place la détection automatisée.
Comment automatiser la génération de PR pour corriger les dérives détectées ?