Infrastructure as code (IaC) : maitriser l'automatisation du code

S'inscrivant dans la mouvance DevOps, l'infrastructure as code (IaC), via des outils comme Terraform, unifie l'administration système et le développement logiciel. Ce qui se traduit par de nombreux bénéfices en matière d'automatisation des opérations cloud.

Qu'est-ce que l'Infrastructure as code (IaC) ?

Aussi nommée infrastructure programmable, l’infrastructure as code (IaC) est une démarche qui vise à configurer une infrastructure informatique (virtuelle), d’une façon similaire à une programmation de logiciel, en utilisant des fichiers descripteurs et des codes. Ce faisant, elle contribue à effacer les barrières entre la conception des applications et la conception des environnements dans lesquels ces applis sont exécutées. Il est d’ailleurs possible pour certaines applications de contenir des scripts créant leur propre machine virtuelle (VM).

Quel est l'avantage de l'infrastructure as code ?

Cette démarche élimine le besoin d’une configuration manuelle et de mettre à jour des composantes matérielles, en rendant possible la gestion programmable de l’infrastructure et l’automatisation des déploiements. Un opérateur ou développeur peut gérer autant (dizaines ou milliers) de machines virtuelles qu’il le souhaite avec le même jeu de scripts ou codes, en réalisant d’importantes économies, et un gain de temps conséquent.

Un exemple d'infrastructure as code ?

Avec l’IaC, il est possible de modéliser une infrastructure informatique en décrivant tous les systèmes et leurs liens, au lieu d’en gérer un à la fois, et de modifier un environnement alors qu’une instance est déjà en cours d’exécution. De même, un serveur web ou hôte virtuel peut être installé et configuré, en utilisant du code informatique.

Pourquoi utiliser l'outil d'infrastructure as code Terraform, et comment ?

Cet outil permet de décrire exactement ce qui va se passer si vous exécutez un code, et d'automatiser les changements avec une intervention humaine minimale. Utilisant son propre langage (HCL), compatible JSON, Terraform peut être utilisé pour concevoir des fichiers de configuration décrivant les ressources à déployer. L’intégration de services tiers est permise, de même que l’ajout de nouvelles fonctionnalités via plugins.

Comment appliquer l'infrastructure as code à Kubernetes ?

Certains produits comme Terraform proposent des plugins qui permettent d’appliquer l’IaC à Kubernetes, et de piloter un cluster complet depuis l’outil d'infrastructure as code. Différents types d’objets peuvent ainsi être manipulés : services, secrets, namespace, configMap, etc.

Comment utiliser l'infrastructure as code sur AWS ?

Amazon propose un outil similaire à Terraform nommé CloudFormation, qui sert à coder une infrastructure as code sur AWS. Les modèles peuvent être créés en utilisant JSON et YAML. Un unique modèle CloudFormation suffit pour déployer des piles d'infrastructure sur différents comptes AWS et dans plusieurs régions.

Comment utiliser l'infrastructure as code sur Azure ?

Tout comme AWS, Azure dispose de son propre outil d’IaC. Appelé Azure Resource Manager, celui-ci permet aux entreprises clientes de définir leur infrastructure virtuelle et toutes leurs dépendances applicatives au sein de modèles, puis d'organiser les ressources à déployer, ou de les supprimer en une seule action.

Quels sont les principaux outils d'infrastructure as code ?

Outre les services déjà cités (Terraform, Cloud Formation, Azure ARM), il existe plusieurs solutions populaires sur le marché de l'infrastructure as code : Chef, Puppet, Fantoche, Ansible, Saltstack, Juju, Docker, Vagrant, Palette, CFEngine, etc.

Infrastructure as code vs infrastructure as a service

Loin de s’opposer, l’une ne va pas sans l’autre. En effet, l’IaC apporte un soutien essentiel à l’infrastructure as a service (IaaS), en lui donnant accès à des machines virtuelles et à des outils de gestion permettant d’exécuter des instances pour les services d'infrastructure.