Pour configurer ou reconfigurer rapidement un poste sur Fedora, il existe quelques programmes appartenant à la catégorie des Managers de configuration. Dans cette catégorie on retrouve Cfengine, Puppet, Chef et Ansible. Chacun ayant des spécificités, je me suis orienté vers Ansible qui m'offrait le système de fonctionnement le plus simple. Il permet de déployer sur la machine locale ou bien tout le parc ma configuration personnalisée, sans avoir eu besoin d'installer un quelconque logiciel sur chaque poste, le gain de temps et d'énergie est vraiment non-négligeable. Contrairement à ses concurents, Ansible s'appuie sur des connexions SSH sortante depuis le poste maître, il n'y a donc aucun port d'écoute supplémentaire sur les postes esclaves à part le port du serveur SSH. De même, il n'est pas lancé au démarrage du poste maître comme un service, mais se lance manuellement avec une simple commande. Si les machines du parc ne sont pas compromises il n'y a pas de raison de le laisser tourner en tâche de fond comme un démon, la configuration d'un poste ne change pas toutes les dix minutes. Lors de l'exécution de la commande, Ansible va lire toute une arborescence de fichiers créés par vos soins, que l'on appelle livre des rôles (en anglais: playbook). Cet ensemble de scripts au format YML permet de faire exécuter à Ansible plein d'opérations complexes, automatiquement, afin de personnaliser toutes les machines du parc d'un seul coup. Les applications de cet atout sont diverses, on peut l'utiliser juste après avoir réinstallé Fedora, ou bien pour une nouvelle machine ajoutée au parc, ou encore pour déployer une application en particulier.

Je suis très heureux de vous partager mon livre des rôles sous license GPL, que je développe depuis quelques mois maintenant, et que j'utilise sur trois machines physiques et quatre machines virtuelles. Un livre des rôles n'est jamais fini, mes rôles actuellement fonctionnels mais en cours d'amélioration sont :

  • common
  • clients
  • ntpserver
  • yum-updatesd

Mes rôles actuellement inachevés sont :

  • cozycloud
  • mailserver
  • rpmbuilder

Il y a quelques astuces à prendre en compte au moment d'écrire son premier playbook. Commencer avec un seul script YML, puis lorsqu'il listera toutes vos personnalisations globales (appliquées à toutes vos machines) vous pourrez le splitter dans l'arborescence du rôle "common". À chaque tâche ou service important vous pourrez développer un nouveau rôle. Et enfin, commencer directement dans un dépôt git (git init --bare), pour bénéficier de la gestion de version même si vous ne voulez pas le partager en ligne. (Le partager c'est quand même plus cool).