Infrastructure – Actualités

Une infrastucture Puppet orchestrée avec Docker et Rancher

22 mars 2016

Docker est en train de révolutionner le packaging de code, sa distribution, ainsi que le monde de l’infrastructure.

Bien que nous ayons déjà utilisé Docker de manière importante à des fins de tests depuis plus d’un an, l’utiliser pour héberger de la production est une étape supplémentaire.

Puppet AIO : une nouvelle donne

Puppet 4 a été publié avec un nouveau système de packaging « All-in-One ». Cela signifiait que nous devions repenser notre manière de déployer et de gérer la majeure partie de notre infrastructure Puppet. Cette raison, ajoutée à des problématiques de mise à l’échelle, nous a encouragé à envisager l’utilisation de Docker pour notre infrastructure Puppet.

Docker-compose

Nous avons commencé par utiliser une simple composition docker-compose, gérée manuellement sur un serveur, en utilisant des volumes.

Cela a donné naissance à une série d’images Docker pour les composants Puppet, orchestrée sous forme d’un fichier docker-compose.yml unique :

Beaucoup d’éléments dans cette composition utilisaient des images construites localement ou des volumes afin de déployer des données dans les containers. En particulier, le déploiement des certificats s’est avéré être un problème difficile à résoudre.

Rancher

Après quelques mois d’utilisation de la stack Puppet basée sur Docker en production, il était temps pour nous de passer à un orchestrateur complet pour faciliter le déploiement et profiter de fonctionnalités avancées de Docker.

Nous avons comparé plusieurs solutions et avons décidé d’utiliser Rancher pour son suivi de la technologie standard de Docker, son approche open-source et son support du format docker-compose.yml.

Nous avons porté notre composition sous Rancher et l’avons améliorée pour nous débarrasser des images construites localement et des volumes locaux. Le but était de construire une infrastructure Puppet complète basée sur Docker/Rancher, installable en quelques clics et pleinement extensible et configurable.

Cette composition a été créée sous forme d’une série de templates de catalogue Rancher qui ne sont pas encore publiés. Chaque template de catalogue génère une stack qui peut s’interconnecter avec les autres stacks pour mettre en place l’infrastructure Puppet complète.

Le schéma ci-dessous décrit notre infrastructure actuelle, qui tourne sur plusieurs nœuds et est redimensionnable à l’échelle du container :

 

Le futur

Sur la base de notre expérience d’orchestration d’une infrastructure complexe sur Docker et Rancher, Camptocamp a lancé un cursus de formation Docker qui inclut une introduction à l’orchestration avec Rancher.