Aller au contenu principal

L'Infrastructure As Code (IAC)

Avec l'essor de la démarche DevOps, la nécessité de pouvoir provisionner et gérer les infrastructures informatiques rapidement a conduit à la création d'un nouveau type d'outils. L'infrastructure en tant que code (IaC) incarne cette évolution, offrant une approche automatisée pour le provisionnement et la gestion des ressources informatiques. Ce type d'outils transforme la gestion des infrastructures en permettant aux équipes de les traiter avec du code informatique, semblable à celui utilisé pour le développement de logiciels. Cette innovation favorise une relation plus étroite et plus synergique entre le développement (Dev) et les opérations (Ops) dans le cadre de la culture DevOps.

Au cœur de cette révolution se trouvent des outils comme Pulumi, Terraform et Ansible. Chacun de ces outils apporte une perspective unique à l'IaC. Pulumi, par exemple, permet aux développeurs d'utiliser des langages de programmation familiers pour définir et déployer l'infrastructure, tandis que Terraform utilise un langage déclaratif pour décrire l'état souhaité de l'infrastructure. Ansible, quant à lui, se concentre sur la gestion de configuration automatisée, facilitant la maintenance et le déploiement de configurations sur diverses machines.

En explorant ces outils et en examinant leurs applications pratiques, ce chapitre vise à vous fournir une compréhension profonde de l'IaC et de son impact sur le paysage technologique actuel.

Concepts Fondamentaux de l'IaC

Impératif vs Déclaratif

L'approche impérative en IaC décrit comment atteindre un état désiré, souvent à travers une série d'instructions ou de commandes.

En revanche, l'approche déclarative se concentre sur le quoi, décrivant l'état désiré de l'infrastructure sans préciser explicitement comment y parvenir.

Cette distinction est fondamentale dans le choix et l'utilisation des outils IaC.

Idempotence

L'idempotence est la propriété d'une opération qui, lorsqu'elle est effectuée à plusieurs reprises, produit le même résultat que si elle était effectuée une seule fois. En IaC, cela signifie que l'exécution répétée d'un script ou d'une configuration ne modifie pas l'infrastructure au-delà de l'état désiré initial.

Gestion de Configuration

La gestion de configuration est un processus systématique visant à établir et maintenir la cohérence des performances, des fonctionnalités et des attributs physiques et fonctionnels d'un produit tout au long de sa vie. Dans le contexte de l'informatique et de l'infrastructure en tant que code (IaC), la gestion de configuration fait spécifiquement référence à la pratique de gérer et de maintenir de manière automatisée et répétable les configurations logicielles et matérielles des systèmes et des infrastructures.

Provisionnement

Le provisionnement de ressources, dans le contexte de l'infrastructure as code se réfère au processus de création de l'infrastructure informatique nécessaire pour supporter diverses applications et services. Cela inclut la création, la configuration et la gestion des ressources telles que les serveurs physiques ou virtuels, le stockage, les réseaux, et d'autres composants logiciels et matériels.

Choix des Outils

Il est important de noter que chercher à opposer des outils ayant des utilisations différentes est une démarche peu productive. Il est courant de voir des débats sur Terraform versus Ansible, mais il est essentiel de comprendre que ces outils sont en réalité complémentaires. Chacun d'entre eux possède ses propres forces et se spécialise dans des domaines spécifiques. Terraform excelle dans la création et la gestion des ressources d'infrastructure, tandis qu'Ansible se concentre sur la configuration des serveurs et des applications. En les utilisant de manière judicieuse en tandem, il est possible de tirer pleinement parti de leurs avantages respectifs, automatisant de manière exhaustive et efficace l'intégralité du cycle de vie de l'infrastructure en tant que code.

Donc au lieu de les considérer comme des concurrents, il est plus approprié de les voir comme des partenaires complémentaires travaillant de concert pour répondre aux besoins diversifiés de votre environnement informatique. Cette approche collaborative offre une flexibilité inestimable et décuple la puissance de l'automatisation. On peut ainsi imaginer des couples Pulumi/Salt, Terraform/Puppet...

Conclusion

Maintenant que vous maitrisez la définition d'infra-as-code, concentrons-nous sur la gestion de Configuration.