Accueil/Expertises / Ops et Infrastructures / Infrastucture As Code

Comment intégrer l’infrastructure as code dans votre pipeline d’intégration continue ?

Le principe de l’intégration continue (CI/CD) vise à identifier des problèmes d’intégration le plus tôt possible dans les cycles de développement. Lors du développement d’une fonctionnalité, son développeur écrit également un test qui lui est associé. Si aucune erreur n’est trouvée, le serveur d’intégration déploie le code en production. Et dans cette démarche d’intégration et de livraison continue, la logique veut que tout devienne code. Concrètement, la technologie permet aujourd’hui d’automatiser la création et la configuration de machines virtuelles avec du code. L’infra as a code (IaC) permet non seulement de poser un langage commun entre le monde des Devs et des Ops, mais également une utilisation commune. Cette façon d’aborder l’infrastructure par le code permet d’approvisionner et d’administrer automatiquement une infrastructure informatique. Elle ne nécessite que l’usage du code, et s’affranchit des processus manuels. 

Pourtant il existe encore beaucoup de services qui restent bloqués sur le fait qu’une infrastructure ne pourrait se gérer que depuis une console, ou directement dans le datacenter. Aujourd’hui il faut challenger vos processus en les mettant à plat, et trouver un langage de développement commun, mais aussi des outils. L’IaC est donc une composante essentielle pour la mise en œuvre de l’intégration continue et de la distribution continue : vos déploiements d’applications n’ont plus à attendre que l’infrastructure soit prête, et vos administrateurs systèmes n’ont plus à gérer de longs processus manuels.

 

Permettre à vos équipes de développement et d’exploitation de s’aligner grâce à l’infrastructure as code. 

Notre expérience montre qu’il est possible d’accélérer, de fiabiliser et d’automatiser le déploiement et la mise en production avec l’infrastructure as code. Nous voyons notre démarche comme la possibilité de partir d’une page blanche pour déployer une infrastructure spécifiquement pensée pour une application. Elle permet également à vos développeurs de travailler sur une infrastructure qui se rapproche beaucoup de celle de la production, quel que soit votre environnement. Vos développeurs peuvent donc coder dans des conditions « réelles ». 

Cette approche favorise une intégration continue efficace, et vous donne un environnement de référence. Vous pouvez ainsi générer un binaire de manière reproductible et sécurisé. C’est également cet environnement qui sera utilisé par la suite pour lancer le binaire en production. Cela permet d’éviter les problèmes lors de la mise en production quand chaque développeur compile de son côté.

Mais pour automatiser un environnement, encore faut-il que celui-ci soit cohérent. Et comment faire si votre équipe de développement et votre équipe d’exploitation ne s’alignent pas sur la façon de configurer les environnements ? L’IaC aide vos équipes de développement et d’exploitation à s’entendre en partageant une description commune du déploiement des applications. Cette démarche se rapproche ainsi de l’approche DevOps. 

Faire en sorte que votre infrastructure et les applications partagent le même pipeline CI/CD

Nous recommandons d’appliquer à votre infrastructure IT les pratiques DevOps via l’IaC. En effet, l’infrastructure elle-même peut passer par le pipeline CI/CD utilisé par les applications lors du développement d’un logiciel. Il est donc possible de lui soumettre les mêmes tests et contrôles des versions. Avec un avantage de taille : les changements appliqués peuvent être annulés très facilement.

La réponse se trouve donc dans l’automatisation et la possibilité de lancer des tests de façon automatisée avec l’intégration continue. Les environnements peuvent être créés automatiquement à la demande et mis à jour lors du déploiement de la prochaine configuration. Mais nous sommes convaincus que l’IaC est une démarche qui va bien au-delà de son but primaire, c’est-à-dire déployer de l’infrastructure. Ce type d’infrastructure donne en effet la possibilité de déployer aussi une approche service. Elle peut amener par exemple de la sécurisation avec le DevSecOps du FineOps, ou des mécaniques bien pensées de scaling et de gestion de la ressource. L’IaC permet donc à vos équipes infras de faire beaucoup plus.

L’infrastructure passe par le même pipeline CI/CD utilisé par les applications lors du développement d’un logiciel

 

Synthèse : 

  • Déploiement d’un pipeline CI/CD
  • Automatisation des tests
  • Alignement des équipes de développement et d’exploitation
  • Création d’un environnement de référence 
  • Amélioration du time to market

         Automatisation

        Reproductibilité

                  Service

               Cohérence

Nos propositions pour mettre en œuvre cette approche moderne de l’infrastructure

Il existe deux types d’approches pour aborder l’IaC : impérative ou déclarative. Nous avons pour habitude d’utiliser Ansible pour l’impératif, et Terraform pour le déclaratif. L’approche impérative apporte le principe de l’idempotence. Cela signifie qu’une opération a toujours le même effet qu’on l’applique une ou plusieurs fois. Elle a notre préférence, car elle permet de garantir que les choses seront telles qu’elles ont été pensées à l’origine. Par définition, une production bouge régulièrement. Et quelqu’un peut créer un incident et oublier de revenir en arrière, oublier de nettoyer le code… L’approche déclarative ne va pas forcément traiter ces problèmes, alors que l’approche impérative peut aisément garantir qu’il n’y aura pas d’altération. 

Terraform propose une multitude d’interfaçages qui permet d’adresser quasiment toutes les infrastructures, qu’elles soient virtuelles ou physiques. Il peut faire de l’AWS, du GCP, de l’Alibaba, de l’On-premise… C’est le langage par excellence de l’IaC, qui permet de déployer une infrastructure en 3 commandes. 

Mais de manière plus générale, il faut toujours avoir une approche agnostique. Gardez à l’esprit qu’il faut d’abord déployer un pipeline CI/CD pour un déploiement automatique, et utiliser les meilleurs outils en fonction des besoins et de l’existant. 

Avec cette approche de l’infrastructure, il n’est donc pas uniquement question de rationalisation, de fiabilisation ou de sécurisation, mais également de performances. Ainsi, à travers l’IaC et l’automatisation, votre entreprise peut accélérer son time to market ou son time to business.  

 

Un centre de compétences dédié à la gestion de vos infrastructures informatiques

Nous contacter

Un centre de compétences dédié à la gestion de vos infrastructures informatiques

Audit de chaîne de déploiement continu

Nous réalisons une analyse de vos processus d’automatisation afin d’identifier des pistes d’optimisation

Industrialisation des infrastructures

Nous vous accompagnons pour mettre en place une démarche d’IaC et moderniser le déploiement et la gestion de vos infrastructures

Vous souhaitez échanger avec nos experts autour de l’infrastructure as code et de l’intégration continue, c’est par ici !

Nous contacter