Principes Iac

1. Définition de l’Infrastructure en tant que Code (IaC)

“L’Infrastructure en tant que Code (IaC) est un type d’infrastructure informatique que les équipes d’exploitation peuvent automatiquement gérer et approvisionner via du code, plutôt que d’utiliser un processus manuel ou interactif. L’infrastructure en tant que code est parfois appelée infrastructure programmable.”1

IaC est donc une approche de conception des infrastructures et des services qu’elles suportent. Alors que cette approche IaC est souvent intégrée à la gestion des ressources dans le nuage (ce qui n’est pas exclusif) et qu’elle permet la gestion de services IaaS (Infrastructure as a Service), ces termes ne doivent pas être confondus.

L’IaC suppose que l’infrastructure soit écrite dans des fichiers maintenus dans un logiciel de contrôle de sources (SCM).

L’IaC se fonde aussi sur l’usage d’outils spécifiques qui se différencient en termes de fonctionnement, d’objectif (de départ), de capacités ou de support. On trouvera donc dans une infrastructure IaC des outils d’automation (continue) comme Ansible. Beaucoup de ces logiciels sont disponibles sous licence Open Source. Les outils d’automatisation de l’infrastructure sont souvent inclus comme composants d’une chaîne d’outils DevOps.

2. IaC et DevOps

L’IaC peut être un élément clé de la mise en oeuvre des meilleures pratiques dans DevOps : intégration des équipes, automatisation, collaboration, reporting, réduction de la complexité, performance/rentabilité, …

  • Les développeurs s’impliquent davantage dans la définition de la configuration et les équipes d’exploitation s’impliquent plus tôt dans le processus de développement.
  • Les outils IaC apportent une visibilité sur l’état et la configuration des serveurs et, en conséquence, fournissent la visibilité aux utilisateurs de l’entreprise en vue de réunir les équipes pour maximiser leurs efforts.
  • L’automatisation en général a pour but de rendre les processus manuels plus efficaces et productifs, tout en évitant les risques de confusion et les erreurs.
  • L’IaC permet la création de meilleurs logiciels et applications avec de la flexibilité, moins de temps d’arrêt et une solution globale rentable pour l’entreprise.
  • L’IaC est destiné à réduire la complexité qui empêche l’efficacité de la configuration manuelle.

3. Modèles et méthodes de communication des outils IaC

  • Modèles Agentless (versus Agent-Based)
  • Méthodes Push / Pull model

4. Type d’approches des outils IaC

Type d’approches 2 :

  • Déclarative (fonctionnelle)
  • Impérative (procédurale)
  • Intelligent (en connaissance de son environnement)
DéclarativeImpérativeIntelligente
Quoi ?Comment ?Pourquoi ?
Ce que la configuration devrait être.Comment l’infrastructure devrait être changée.Pourquoi l’infrastructure doit atteindre un certain état compte tenu de toutes les relations et dépendances
Cette approche définit un état désiré et le système fait le nécessaire pour atteindre cet étatCette approche définit des commandes spécifiques à exécuter pour obtenir l’état désiréCette approche détermine le bon état désiré avant de faire le nécessaire pour l’atteindre sans impacter les applications co-dépendantes

5. Évaluation des outils IaC

6. Immutabilité de l’infrastructure


  1. Paradigme Infrastructure as Code : “Infrastructure as Code (IAC) is a type of IT infrastructure that operations teams can automatically manage and provision through code, rather than using a manual process. Infrastructure as Code is sometimes referred to as programmable infrastructure.” (What is Infrastructure as Code (IAC)? - Definition from WhatIs.com) [return]
  2. https://en.wikipedia.org/wiki/Infrastructure_as_Code#Types_of_approaches [return]