tadata
← Retour à l'accueil

Patterns Infrastructure as Code : outils, état et conception multi-comptes

#infrastructure#iac#devops#terraform#cloud

L'Infrastructure as Code (IaC) est la pratique de gérer l'infrastructure via des definitions declaratives ou imperatives stockées dans le contrôle de version. En 2026, la question n'est plus de savoir s'il faut utiliser l'IaC mais quel outil, pattern et modèle organisationnel correspond a votre contexte.

Comparaison des outils

DimensionTerraform / OpenTofuPulumiAWS CDKAzure BicepCrossplane
LangageHCLTypeScript, Python, Go, C#TypeScript, Python, GoBicep DSLYAML (CRDs K8s)
ParadigmeDeclaratifImperatif + DeclaratifImperatif → CloudFormationDeclaratifDeclaratif (GitOps)
Multi-cloudExcellent (1000+ providers)Bon (en croissance)AWS uniquementAzure uniquementBon (providers)
Gestion d'étatBackend distant (S3, GCS, TFC)Pulumi Cloud ou auto-géréStack CloudFormationAzure Resource Manageretcd (cluster K8s)
Courbe d'apprentissageMoyenne (HCL unique)Faible (langages familiers)MoyenneFaible (devs Azure)Haute (K8s requis)
Licence (2026)BSL (TF) / MPL (OpenTofu)Apache 2.0Apache 2.0MITApache 2.0
Ideal pourMulti-cloud, grandes équipesÉquipes orientées devShops AWS-nativesShops Azure-nativesPlateformes K8s

Comparaison gestion d'état

StratégieAvantagesInconvenientsIdeal pour
État localSimple, pas de setupPas de collaboration, pas de verrouApprentissage, prototypage
Backend distant (S3+DynamoDB)Verrouillage, accès équipe, versionneAuto-géré, pas d'UIÉquipes AWS
Terraform Cloud / HCPUI, historique, RBAC, intégration VCSCoût, vendor lock-inÉquipes entreprise
Pulumi CloudIntegre a Pulumi, gestion des secretsLie a l'écosystème PulumiUtilisateurs Pulumi
GitOps (Crossplane)K8s-natif, détection de deriveNécessite un cluster K8sÉquipes platform engineering

Règle critique : Les fichiers d'état contiennent des secrets. Chiffrer au repos, restreindre l'accès, jamais de commit dans git.

Patterns de conception de modules

tadata
  • Pattern de composition
    • Le module racine appelle des modules enfants
    • Chaque module = un groupe logique de ressources
    • Exemple : module réseau + module calcul + module base de données
  • Pattern wrapper
    • Fine enveloppe autour d'une ressource du provider
    • Impose les standards de l'organisation (tags, nommage, chiffrement)
    • Exemple : module « aws-s3-bucket » qui active toujours le versioning
  • Pattern scaffold / template
    • Template d'environnement complet
    • Paramétré pour dev / staging / prod
    • Exemple : module « environment » qui crée VPC + EKS + RDS
  • Pattern bibliothèque
    • Modules partagés dans un registre central
    • Versionnés, testés, documentés
    • Exemple : registre privé Terraform ou tags Git
tadata
  • modules/ — reusable, tagged modules/vX.Y.Z
    • s3-data
      • versioning, KMS, lifecycle to Glacier for old snapshots
    • ecr
      • immutable tags, scan on push, lifecycle policy
    • eks
      • cluster, CPU + GPU node groups, Pod Identity
    • sagemaker / iam
      • domain, execution roles, least-privilege policies
  • envs/ — one state per environment
    • test
      • main.tf, test.tfvars, backend key test/
    • staging
      • same modules, staging.tfvars
    • prod
      • separate AWS account, prod.tfvars
Organisation du dépôt : une racine par environnement, des modules partagés et versionnés

Extrait de la fiche « Infrastructure as Code for ML (Terraform on AWS) » · Demander la fiche complète

Stratégie de tests

Niveau de testCe qu'il validéOutilVitesseQuand exécuter
Analyse statiqueSyntaxe, bonnes pratiqués, sécuritétflint, checkov, tfsecSecondesChaque commit
Tests unitairesLogique des modules, validation des variablestftest, tests unitaires PulumiSecondesChaque PR
Tests de contratLes sorties correspondent au schema attenduAssertions personnaliseesSecondesChaque PR
Tests d'intégrationL'infra réelle se deploie et fonctionneTerratestMinutesNightly ou par PR
Tests E2E / SmokeLa stack complete est fonctionnelleTests applicatifsMinutesPost-déploiement
Détection de deriveL'état réel correspond au desireterraform plan (programmé)MinutesQuotidien (cron)
tadata
Organization root (management account: billing, Organizations, Control Tower only) Security OU Logarchive Audit / security tooling(delegated admin) Infrastructure OU Network hub (TGW, DX,egress) Shared services (AD,CI/CD) Workloads OU Prod OU app-a-prod app-b-prod Non-prod OU app-a-dev app-a-test Sandbox OU dev-alice dev-bob(budget-capped) Policy staging OU test new SCPs Suspended OU closed or quarantinedaccounts (deny-allSCP)
Organization root (management account: billing, Organizations, Control Tower only) Security OU Logarchive Audit / security tooling(delegated admin) Infrastructure OU Network hub (TGW, DX,egress) Shared services (AD,CI/CD) Workloads OU Prod OU app-a-prod app-b-prod Non-prod OU app-a-dev app-a-test Sandbox OU dev-alice dev-bob(budget-capped) Policy staging OU test new SCPs Suspended OU closed or quarantinedaccounts (deny-allSCP)
Organisation recommandée des OU (whitepaper AWS multi-comptes). Les politiques s'attachent aux OU ; un compte par workload et par environnement.

Extrait de la fiche « SAP-C02 Org Complexity 1: Multi-Account Governance » · Demander la fiche complète

Principes clés

Traitez les modules comme des bibliotheques. Versionnez-les, testez-les, documentez leurs interfaces. Les breaking changes doivent suivre le versioning semantique.

Isolation de l'état par environnement. Ne partagez jamais un fichier d'état entre dev et prod. Un mauvais plan en dev ne doit jamais risquer les ressources de production.

Plan avant apply, toujours. Chaque changement passé par plan en CI. apply ne se fait qu'après revue humaine ou vérification automatisee des politiques (OPA/Sentinel).

tadata
4 1 5 stages · pending 4 passed 1 pending plan (test, staging, prod) 2m 10s posted on PR checkov + tflint 35s apply-test 4m apply-staging 5m apply-prod waiting for review: 1 of 1 approvals
4 1 5 stages · pending 4 passed 1 pending plan (test, staging, prod) 2m 10s posted on PR checkov + tflint 35s apply-test 4m apply-staging 5m apply-prod waiting for review: 1 of 1 approvals
Merge de la PR : test et staging sont appliqués, la prod attend le reviewer obligatoire de l'environnement 'production'

Extrait de la fiche « Infrastructure as Code for ML (Terraform on AWS) » · Demander la fiche complète

Ressources

Nous utilisons des cookies analytiques pour améliorer votre expérience. Aucune donnée personnelle n'est collectée.