Les outils d’automatisation open source

Vos équipes sont rassurées par des solutions propriétaires, et les nombreuses fonctionnalités qu’elles offrent. Pourtant, l’intérêt est grandissant du côté des utilisateurs de solutions open source. Davantage de DSI sont équipées aujourd’hui de cette typologie d’outils. Justement, quels sont ces outils d’automatisation, et leurs spécificités?

Ansible

Ansible est un logiciel libre et idempotent d’automatisation, de déploiement et de gestion des configurations sous licence GNU/GPL, écrit en Python et est multiplateforme (GNU/Linux, Microsoft Windows).
Ce logiciel est maintenu par son créateur Michael DeHaan et sa communauté d’utilisateur qui comprend, entre autre RedHat et Hewlett-Packard.

Il existe une version graphique et payante d’Ansible : Ansible Tower. Cette version est soutenue par RedHat et offre des fonctions de contrôle d’accès basé sur les rôles, de planification des tâches et de gestion graphique des inventaires.

La plus petite unité de valeurs d’Ansible est une tâche décrite en syntaxe YAML, un ensemble de tâches constitue un play et un ensemble de play constitue un playbook. Il est aussi possible d’utiliser la syntaxe Jinja2 dans des templates ou filtres. Dans les tâches ou les templates, il est possible d’utiliser des variables que l’on peut créer soi-même ou utiliser les « facts ».

Ces facts sont un ensemble de variables décrivant les spécificités d’une machine.
Ansible dispose aussi d’un certain nombre de modules pouvant être exécutés directement sur les machines distantes ou par les Playbook. Ces modules sont assez variés et permettent plusieurs interactions.

Voici quelques exemples de module classés en catégories :

  • Cloud : ils permettent notamment d’interagir avec les offres Cloud d’Amazon, Cloudstack, Digital Ocean ou avec la suite de logiciel Vmware.
  • Commandes: ils permettent d’exécuter des commandes ou des scripts directement sur les machines distantes.
  • Bases de Données : permet d’interagir avec MySQL, postgresql, redis, riak, …
  • Files : permettent d’assembler, de trouver, de copier, de décompresser ou compresser des fichiers (copy, fetch, lineinfile, template, unarchive)
  • Monitoring : permettent l’interaction avec des logiciels comme Nagios ou Zabbix (zabbix, nagios, sensu, monit, datadog).
  • Système : permettent l’interaction avec le système d’exploitation de la machine distante, comme la gestion des utilisateurs et des groupes, la gestion des « authorized_key » pour les clefs SSH ou par exemple les politiques de SELinux pour les systèmes d’exploitation de type RedHat.
  • Packaging : il gère l’interaction avec apt, yum, pip, bower, npm, homebrew
  • Windows : gestion des systèmes d’exploitation Windows.

Les principaux points positifs d’Ansible sont :

  • La clarté de la documentation officielle et sa facilité d’installation (Ansible ne nécessite pas d’installation d’agent supplémentaire sur les machines distantes.)
  • La communication entre les machines se fait par le biais de tunnel SSH. Et le seul prérequis pour permettre cette communication est le déploiement de la clef publique de l’utilisateur Ansible sur les machines distantes et la présence de python 2.7 et sudo sur les machines distantes.
  • Le fait qu’Ansible soit écrit dans un langage assez connu. Cela permet si le besoin se fait sentir de développer plus rapidement et efficacement nos propres modules.

Cela est moins contraignant que de déployer un agent supplémentaire sur des machines.

Puppet

Puppet est un logiciel, sous licence Apache 2, permettant d’automatiser un grand nombre de tâches d’administration, comme l’installation de logiciels, de services ou encore de modifier des fichiers. Puppet fonctionne sous le mode client /serveur, il a été écrit en Ruby ce qui lui permet d’être multi-plate-forme (BSD, SUN, Linux, Windows). Les échanges entre le maître et les esclaves se font par le biais de communications HTTPS. La société éditant Puppet, Reductive Labs, dispose d’une version commerciale permettant en plus des fonctionnalités de la version open-source :

  • d’avoir un support sur Puppet et les modules maintenus par Reductive Labs
  • d’avoir une interface graphique de gestion
  • de gérer les machines virtuelles Vmware

En plus de Puppet, Reductive Labs a développé le logiciel nommé Facter. Celui-ci permet de lister les éléments propres aux systèmes administrés, comme le nom de la machine, les adresses MAC et IP, le système d’exploitation ainsi que les variables d’environnement utilisables dans les « templates » de Puppet.

Ces éléments peuvent ensuite être utilisés dans les « templates » Puppet sous la forme de variable. Il est très souvent utilisé par les concurrents pour la même fonction. Comme bon nombre de ses concurrents, Puppet dispose d’une « forge » permettant de partager, rechercher et récupérer des modules.

Chef

Tout comme Puppet, Chef est aussi un outil de gestion de configuration multi-plate-forme, écrit en Ruby et sous licence Apache 2. Chef dispose d’un serveur central qui détient les configurations des machines clientes. Comme Puppet, il est nécessaire d’installer un agent sur chaque machine que l’on veut configurer avec ce logiciel.

Après l’installation du client, les machines esclaves vont comparer leur configuration par rapport à celles référencées sur le serveur maître et effectuent si besoin les changements nécessaires pour coller à la configuration décrite dans le serveur maître. Comme le nom du logiciel, l’appellation des outils est en rapport avec la cuisine. Ainsi, l’installation d’un programme est décrite par une recette (« recipes » en anglais).

On trouve par exemple une recette pour « MySQL », une autre pour « Apache » etc. L’ensemble des recettes, pour configurer un logiciel, est contenu dans un livre de recette (« cookbook » en anglais). « Knife », traduction du mot français « couteau » en anglais, est l’outil pour interagir avec Chef. Nous aurons aussi les « rôles » qui désignent l’ensemble des livres de recettes ayant la même finalité.

Par exemple, le rôle « serveur web » décrira les recettes pour installer le serveur web mais aussi la configuration du pare-feu de la machine.

Les ingénieurs PROJIXI Europe intègrent des solutions propriétaires et open source chez des grands comptes, grâce à leurs expériences sur des projets significatifs.