L’infrastructure as Code et l’automatisation de la gestion du système d’information

A l’heure où les contraintes de coût, de qualité et de délai dans les projets IT sont de plus en plus fortes, allant jusqu’à déterminer la survie d’un produit face aux offres des concurrents, il est devenu indispensable de se doter d’une infrastructure agile, robuste, flexible et résiliente.

 

C’est la promesse de la virtualisation pour rester compétitif. Elle s’opère de manière totalement dématérialisée sur des plateformes de Cloud Public ou bien sur des installations physiques On-Premise telles que Openstack ou Openshift.

Les nouveaux défis IT de demain : quand la crise joue le rôle d’accélérateur des besoins d’automatisation et de fiabilisation de gestion du SI

Les méthodes agiles et les pratiques DevOps permettent de rester compétitifs. Elles changent notre façon de travailler et accélèrent considérablement les phases de livraison. Cela passe par une automatisation complète de la gestion des chaînes de développement logiciel.

Pour suivre cette accélération, un effort similaire doit être mis en œuvre dans l’automatisation de la gestion de l’infrastructure et de la configuration des environnements. En effet, pour assurer en toute sécurité les bonnes livraisons, il ne suffit pas uniquement de déployer une application. Il faut créer un environnement, configurer les machines sous-jacentes (physiques ou virtuelles), le tester, le stocker et enfin le mettre à l’échelle pour répondre à la charge.

La crise de la COVID-19 a contribué à l’accélération de l’ouverture des systèmes d’information, requérant  une attention particulière quant à la robustesse et à la résilience des architectures à mettre en place.

Il s’agit désormais d’appréhender le système d’information dans sa globalité : site web, CRM, plateforme d’infrastructure, solutions de développement, outils de test, annuaire d’entreprise, VPN, proxy, firewalls, réseau…

Qu’est-ce que l’Infrastructure as Code ?

L’Infrastructure as Code (IaC) est une pratique qui consiste à gérer virtuellement son infrastructure (réseau, machine, stockage, configuration, application) sous forme de lignes de code. Ainsi, on décrit un état souhaité ou des étapes de configuration successives qui seront confiés à une solution de déploiement.

L’Infrastructure as Code : une des clés indispensables pour gagner en agilité et en efficacité

L’Infrastructure as Code facilite la gestion d’un système d’information tout en fiabilisant son architecture.

Elle permet un assemblage précis des différents composants et équipements. Elle autorise : leur dimensionnement en fonction de la charge, les déploiements à la demande, la création des postes de développement, la configuration des machines, le déploiement du code applicatif et des services, la création des espaces de stockage, le tout sans accès physique.

L’Infrastructure as Code constitue une réponse technique solide face aux besoins d’industrialisation.

Au service des équipes, elle permet des livraisons justes tout en réduisant les cycles de développement. Son implémentation facilite la répétition des processus longs et complexes, à l’échelle, de manière rigoureusement identique. Elle facilite la gestion des déploiements Multicloud ou On-Premise. Enfin, elle assure la sécurisation des infrastructures par un déploiement unique des composantes d’infrastructure fiables.

Comment mettre en place une Infrastructure robuste, flexible et résiliente grâce à l’IaC ?

Pour mettre en place une infrastructure robuste, flexible et résiliente, nous recommandons l’utilisation distincte d’un outil de configuration orchestration pour le déploiement de l’infrastructure sous-jacente et d’un outil de Configuration Management pour le déploiement des applications et des configurations.

Les outils de configuration et d’orchestration permettent d’automatiser le déploiement des infrastructures telles que : les topologies réseau, les groupes de sécurité, les serveurs, les clusters et les répartiteurs de charge.

Les outils de Configuration Management permettent, quant eux, de configurer des infrastructures déjà provisionnées à l’instar des socles applicatifs, des utilisateurs, des pares-feux, de l’installation de docker, des déploiement de projets et des configurations durcies.

Le marché de l’Infrastructure as Code est aujourd’hui mature et propose un grand nombre de solutions. Nous en avons retenu deux en prenant pour critère leur facilité de prise en main et leur flexibilité : Terraform et Ansible.

Qu’est-ce que Terraform ?

Terraform est un environnement logiciel open-source d’infrastructure as code édité par la société HashiCorp. Cette solution automatise la construction des ressources d’une infrastructure tels qu’un réseau, des machines virtuelles, un groupe de sécurité ou une base de données.

Pourquoi Terraform est idéal pour orchestrer la configuration d’une infrastructure ?

Terraform intervient pour construire, changer et versionner une infrastructure virtuelle en ligne de code.

En effet, un de ses atouts majeurs réside dans sa capacité à déployer une infrastructure indépendamment du fournisseur Cloud ou de la plateforme de virtualisation utilisée. Ainsi, il permet de réduire considérablement l’effort d’administration tout en fiabilisant l’architecture globale du système d’information.

Son implémentation permet de stocker, en ligne de code, les architectures existantes, fiabilisant la répétition des déploiements à faible coût.

En l’intégrant aux processus d’intégration et de déploiement continu, on obtient un retour sur investissement sur la conception de l’infrastructure et les temps de déploiement, tout en réduisant les erreurs de configuration. Il devient alors possible de créer des environnements de test jetables, de réviser facilement à la hausse ou à la baisse des composants d’infrastructure.

Workflow de la solution Terraform

Dans sa version Entreprise, Terraform propose un workflow en trois étapes :

  • Write : création de l’infrastructure sous forme de code
  • Plan : prévisualisation des changements avant application
  • Apply :  mise à disposition d’une infrastructure reproductible

Les équipes utilisent tout d’abord un registre privé pour récupérer ou publier des configurations finies (des zones réseaux, des machines virtuelles, des règles de sécurité, l’infrastructure d’une application, voir même tout un datacenter).

Les configurations sont ensuite stockées dans un gestionnaire de code source, permettant de collaborer autour des infrastructures. L’interface Terraform Cloud propose une interface d’administration centralisant toutes les opérations.

Enfin, les opérations sont exécutées sur des plateformes de virtualisation telles que AWS, Azure, Cloud privé Openstack ou Kubernetes.

Qu’est-ce qu’Ansible ?

Ansible est une plateforme Open Source de gestion des configurations et d’automatisation développée par Red Hat.

Principe de fonctionnement de la solution d’automatisation Ansible

Ansible permet d’exécuter des étapes de configuration en langage YAML. Il est possible de l’utiliser pour déployer des applications, configurer des infrastructures déjà provisionnées. Cette plateforme est également utilisée pour le déploiement continu et pour l’administration de parcs informatiques.

La version Entreprise, propose une tour de contrôle, Ansible Tower, pour les opérations de configuration de l’infrastructure ou de déploiement applicatif. La solution permet d’exécuter tous types d’actions sur une flotte de serveurs en simplifiant les opérations quotidiennes, jusqu’aux processus les plus complexes :

  • Mise à jour des versions d’un composant sur des parcs volumineux
  • Déploiement de couches de composants d’applications sur plusieurs instances SaaS
  • Déploiement logiciel et configuration de machines cibles (durcissement, dépendances, configuration DNS…)

Tout comme Terraform, le principe de fonctionnement consiste à collaborer autour d’un système de Configuration Management pour définir en amont des actions dans des scripts. Une fois écrites et validées, ces actions peuvent être exécutées autant de fois que souhaitées.

L’Infrastructure as Code : une approche stratégique extrêmement puissante pour tirer le meilleur du Cloud

L’Infrastructure as Code permet d’automatiser toute la gestion d’une infrastructure IT, ses promesses sont nombreuses :

  • efficience des cycles de développement
  • résilience accrue en cas de pannes
  • optimisation des coûts d’exploitation

En profitant de l’essor de la virtualisation, l’Infrastructure as Code s’avère être une approche stratégique extrêmement puissante pour tirer le meilleur du Cloud : hybridation, cloud public, cloud privé, multicloud, IaaS.

Attention toutefois, l’adoption de l’Infrastructure as Code nécessite une réelle expertise pour sa mise en œuvre. C’est un prérequis à une transformation stable et réussie, tant sur les dimensions organisationnelles que techniques.

Auteur : Léo Menschenfreund

Architecte Sécurité