Infrastructure as Code
IAC (Infrastructure As Code) est un type d'infrastructure IT que les équipes opérationnelles peuvent administrer et mettre à disposition automatiquement, via du code, plutôt qu'en recourant à un traitement manuel. L'infrastructure as a code est aussi appelée « infrastructure programmable ».
Le concept d'IAC est similaire à celui des scripts de programmation utilisés pour automatiser des processus IT importants. Toutefois, les 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. Plutôt que d'utiliser des scripts, l'IAC fait appel à un langage descriptif ou de niveau supérieur pour coder des processus de déploiement et de mise à disposition adaptatifs et plus polyvalents.
Par exemple, une IAC codée avec Ansible, un outil de configuration et de gestion IT, permettrait d'installer un serveur MySQL, de vérifier le bon fonctionnement de MySQL, de créer un compte d'utilisateur et son mot de passe, de configurer une nouvelle base de données et de supprimer les bases de données superflues ; le tout via du code.
Le processus IAC ressemble étroitement aux pratiques formelles de conception logicielle par lesquelles les développeurs contrôlent soigneusement les versions du code, testent ses itérations et restreignent le déploiement tant que le logiciel n'est pas éprouvé et approuvé pour la production.
Utiliser du code pour déployer et mettre à disposition des serveurs et des applications se révèle particulièrement intéressant pour les développeurs logiciels. Plutôt que de s'appuyer sur des administrateurs système pour mettre à disposition un environnement DevOps et en gérer l'aspect opérationnel, un développeur peut rédiger un processus IAC qui déploiera et mettra à disposition une nouvelle application à des fins expérimentales ou d'assurance qualité.
Malgré ses avantages, l'IAC ne va pas sans inconvénients potentiels. Par exemple, le développement d'un code IAC peut nécessiter des outils supplémentaires susceptibles d'induire des courbes d'apprentissage et des possibilités d'erreur. Or, toute erreur au sein d'un code IAC peut proliférer rapidement à l'échelle des serveurs. Il est donc essentiel de contrôler rigoureusement les versions et de procéder à des tests exhaustifs avant diffusion.
Si les administrateurs changent les configurations des serveurs sans modifier le code IAC, il peut s'ensuivre une « dérive de configuration », qui se produit en présence de configurations incohérentes au sein des systèmes d'un datacenter.
Il est important d'intégrer totalement l'IAC à l'administration des systèmes, aux opérations IT et aux processus DevOps, au moyen de procédures et de politiques soigneusement documentées.
Parallèlement à Ansible, les outils IAC répandus comptent Vagrant, Puppet et Chef.