IaC (Infrastructure as Code)

Définition

IaC est la pratique de gérer et de provisionner l’infrastructure via des fichiers de définition lisibles par machine plutôt que par la configuration matérielle physique ou des outils interactifs. L’infrastructure est définie en code, contrôlée par version, revue et déployée automatiquement.

Approches IaC

|| Approche | Outil | Paradigme | ||———-|——|———-| || Déclaratif | Terraform, CloudFormation | Définir l’état souhaité ; l’outil détermine comment l’atteindre | || Déclaratif | Ansible, Pulumi | Définir l’état souhaité ; l’outil assure la conformité | || Impératif | Scripts shell, Chef | Définir les instructions étape par étape |

Concepts clés

  • Déclaratif vs Impératif : Déclaratif = « quoi » (état souhaité) ; Impératif = « comment » (étapes)
  • Fichier d’état : Suit l’état actuel de l’infrastructure (état Terraform, faits Ansible)
  • Détection de dérive : Comparaison de l’infrastructure réelle avec l’état déclaré
  • Modularité : Composants réutilisables (modules Terraform, rôles Ansible)
  • Plan/Apply : Aperçu des modifications avant application (Terraform plan)
  • Idempotence : Exécuter le même code plusieurs fois produit le même résultat

Outils IaC

|| Outil | Langage | Support cloud | Type | ||——|———-|—————|——| || Terraform | HCL | Multi-cloud | Déclaratif | || Pulumi | TypeScript/Python/Go | Multi-cloud | Déclaratif | || CloudFormation | JSON/YAML | AWS uniquement | Déclaratif | || Ansible | YAML | Multi-plateforme | Déclaratif | || AWS CDK | TypeScript/Python/Java | AWS uniquement | Déclaratif | || Crossplane | YAML (CRDs) | Multi-cloud | Déclaratif |

Avantages de l’IaC

  • Reproductibilité : Même infrastructure déployée identiquement à chaque fois
  • Contrôle de version : Suivre les modifications d’infrastructure avec Git
  • Collaboration : Code review pour les modifications d’infrastructure
  • Reprise après sinistre : Reconstruire l’infrastructure à partir du code
  • Suivi des coûts : Infrastructure en code dans l’historique Git

Termes associés