L’Infrastructure As Code simplifie l’administration de l’infrastructure IT. Le traitement ne s’appuie plus sur des processus manuels difficiles à suivre et favorisant les erreurs. Cette pratique clé de DevOps permet d’effectuer des changements d’infrastructure plus facilement, rapidement et de manière plus fiable tout en étant répétables.
Les silos sont contre-productifs ! Même avec le cloud, des équipes informatiques peuvent se retrouver avec des silos. C’est le cas avec l’IaaS.
Schématiquement, chaque application déployée dispose d’une infrastructures dédiée. Résultat, chacune est gérée de manière unique. D’où l’accumulation de silos, car dans de nombreux cas les opérationnels oublient de partager les serveurs qu’ils empruntent ponctuellement…
Qu’est ce que l’infrastructure as a code ?
Pour résoudre ce problème, des entreprises ont recours à l’IaC (Infrastructure as a Code). Appelée aussi « infrastructure programmable », l’IaC peut être assimilée aux scripts de programmation utilisés pour automatiser des processus IT importants.
À la différence près que ces scripts sont essentiellement destinés à automatiser une série d’étapes statiques qui doivent être répétées de nombreuses fois sur plusieurs serveurs.
L’IaC s’appuie sur un langage descriptif (DSL – Domain-Specific-Language) pour coder des processus de déploiement et de mise à disposition qui sont adaptatifs et plus polyvalents.
En un mot, il s’agit d’écrire du code pour provisionner et gérer un serveur, en plus d’automatiser les processus. Ce concept va donc au-delà de la simple automatisation de l’infrastructure.
En se référant aux pratiques DevOps, les équipes doivent s’assurer que les scripts d’automatisation sont en effet exempts d’erreurs. Et qu’ils peuvent être redéployés sur plusieurs serveurs et qu’ils peuvent être engagés à la fois par les équipes d’exploitation et de développement.
Les avantages de l’Infrastructure as Code
Les équipes qui implémentent une infrastructure en tant que code peuvent fournir des environnements stables rapidement et à grande échelle. Une commande de déploiement définit toujours l’environnement cible avec la même configuration, quel que soit l’état initial de l’environnement. C’est le principe de l’idempotence.
Pour l’équipe de développement, cet environnement unifié permet à l’équipe des opérations informatiques de gérer le cycle de vie continu des nouvelles applications.
Le second avantage est que le calcul. Le stockage et la mise en réseau sont traités comme des pools de ressources fluides et désagrégées : dès qu’une ressource n’est plus nécessaire, elle retourne dans le pool, où elle peut être affectée à une autre application.
Par ailleurs, la gestion quotidienne et la mise à jour sont simplifiées. L’IaC permet de réaliser automatiquement des tâches de routine telles que la mise à jour du firmware, l’ajout de stockage ou la modification de la connectivité réseau. Les configurations matérielles sont maintenues sous forme de modèles logiciels qui sont stockés dans les mêmes référentiels que le code de l’application.
L’IaC séduit de plus en plus d’équipes au fur et à mesure de l’apparition d’outils qui facilitent l’ensemble du processus. (Ansible, Jenkins, Testinfra, Puppet…)
Par exemple, Ansible modélise votre infrastructure informatique. En décrivant comment tous vos systèmes sont reliés entre eux, plutôt que de gérer un seul système à la fois. Par ailleurs, il est possible de modifier les environnements non seulement pendant le lancement d’une instance, mais aussi lorsqu’une instance est déjà en cours d’exécution.
Puppet peut notamment installer un serveur Apache, vérifier qu’il fonctionne correctement, créer un compte utilisateur et un mot de passe, le configurer sur un port spécifique et configurer de nouveaux hôtes virtuels. Le tout via du code.
Accessibilité & Simplificité
Ces solutions rendent les environnements IaC accessibles à toute personne ayant une connaissance de base des techniques et des structures de codage modernes. C’est peut-être là le point faible de l’IaC.
Cette méthodologie doit être utilisée avec parcimonie et sous contrôle par des débutants. La facilité avec laquelle il est possible de faire tourner une centaine d’instances en quelques minutes peut aussi être à l’origine de dysfonctionnements…
Autre recommandation : préciser l’environnement aussi strictement que possible, en laissant peu de place au hasard…
L’IaC représente une réelle opportunité pour des équipes d’aller plus vite et mieux. Mais il faut raison garder. Comme dit le proverbe, « il ne faut pas confondre vitesse et précipitation ».