Bonne année à tous !
Au pied du sapin cette année, une nouvelle version de Rudder, la 2.9 “Liberty ship”! (pour les curieux : http://fr.wikipedia.org/wiki/Liberty_ship)
Pour commencer 2014, et dans la continuité de Rudder 2.8, la version 2.9 se veut mieux utilisable et adaptable. Il y a relativement peu d’évolutions dans cette nouvelle version, mais elle va changer la manière dont vous utilisez Rudder.
Dans “Liberty ship”, les principaux ajouts et les nouvelles features sont :
- ncf : Rudder vient maintenant avec ncf, le framework CFEngine créé par Normation (https://github.com/Normation/ncf) ;
- Catégories de Règles : organisez vos Règles par catégorie ;
- Application de Directives : vérifiez et sélectionnez les Règles appliquant une Directive directement depuis son écran de configuration ;
- Formulaire de Directives : le formulaire de Directives est plus intuitif et pratique ;
- Configuration des paramètres de communication nœuds serveur : Des paramètres de sécurité de CFEngine peuvent être configurés directement depuis l’interface web ;
- Binaires CFEngine : plus besoin de taper le chemin complet pour utiliser les binaires CFEngine de Rudder ;
- Autres améliorations dans l’interface web : sauvegarde du nombre d’entrées affichées dans les tables, suppression d’entrées inutiles, Directives non appliquées plus visibles…
Créez vos propres Techniques avec ncf
Un des principaux objectifs de Rudder est de faciliter l’accès à la gestion de configuration en essayant de réduire sa complexité, ce que nous espérons réaliser avec notre interface web et la bibliothèque de Techniques de base.
Problème : si aucune Technique n’existe pour répondre à un besoin, il faut la créer, et ce n’est pas toujours évident de mixer CFEngine avec les besoins pour Rudder sans être expert CFEngine.
Pour adresser ce problème, nous avons créé le framework ncf. Le but principal de ncf est de fournir un cadre et des fonctions basiques pour CFEngine afin d’exprimer très simplement ses intentions, sans devoir s’attarder sur les détails et la syntaxe CFEngine. On peut ainsi écrire rapidement et efficacement des promesses fonctionnelles.
Des experts peuvent alors écrire les briques essentielles, en y intégrant tout le savoir faire et l’expérience nécessaire pour tirer le meilleur parti de CFEngine, tandis que le reste de l’équipe peut écrire les règles de configuration effectives.
Par exemple, dans ncf nous avons un bundle package_install qui permet d’installer un paquet dont le nom est passé en paramètre. Ce bundle va faire l’abstraction sur le système utilisé et va faire les appels corrects en CFEngine, puis remonter un reporting (en texte lisible par nous autre humains, et en format machine pour Rudder).
De plus, nous avons créé les outils pour faire le lien entre ncf et Rudder : à partir d’un fichier ncf basé sur les bundles de ncf, l’outil va générer les fichiers nécessaires pour en faire une Technique Rudder, utilisable directement dans l’interface web, avec un reporting correct. Nous espérons avec ncf, que la création de Techniques sera beaucoup plus facile, et qu’elle permettra d’adapter Rudder beaucoup plus facilement à vos cas d’utilisation.
Actuellement, il n’est pas encore possible de créer des Techniques avec des paramètres à définir dans Rudder (toutes les valeurs, par exemples noms de paquets et de services, doivent être en dur dans le fichier ncf). Cela est prévu dans une évolution future – vous verrez beaucoup d’évolutions autour de ncf et son intégration dans Rudder très prochainement, y compris notamment une interface graphique pour batir simplement des nouvelles Techniques.
ncf est complètement utilisable en dehors de Rudder, et peut être simplement intégré à toute installation de CFEngine. Son dépôt git est accessible ici : https://github.com/Normation/ncf
Un peu de rangement pour vos Règles
Lorsque le nombre de Règles augmente sur un serveur Rudder, on peut se retrouver perdu parmi toutes celles que l’on a et perdre du temps à retrouver celles qui nous intéressent.
Pour faciliter la recherche et la compréhension de l’ensemble des Règles, nous avons ajouté la possibilité de les organiser en les regroupant par catégories.
De cette manière, vous pouvez séparer vos Règles de manière logique (par environnement, site, système…) et naviguer directement parmi elles.
De plus, nous en avons profité pour réduire les informations affichées dans le tableau des Règles pour qu’elles soient plus concises et pertinentes.
Appliquez vos Directives en un clic
Une tache particulièrement rébarbative, c’est l’application de Directives dans des Rules. Premièrement, vous créez/modifiez une Directive, puis ensuite seulement, vous allez les faire appliquer par les Règles que vous désirez, dans un autre écran. Il faut alors ouvrir plusieurs règles, valider plusieurs fois le même changement, et ca peut être une perte de temps considérable.
Avec “Liberty ship”, plus besoin de tous ces clics et chargements de pages : depuis le formulaire d’édition d’une Directive, vous pouvez maintenant l’appliquer directement à une ou plusieurs Règles et vérifier son application actuelle.
Nous avons reproduit le même affichage que dans l’écran des Règles, avec sur la gauche les catégories, et sur la droite l’ensemble des Règles. À une différence près : maintenant des cases à cocher sont affichées en face de chaque Rule et chaque catégorie.
Son fonctionnement : si une Règle est cochée, elle applique la Directive, sinon elle ne l’applique pas. Pour une catégorie, la cocher sélectionne toutes les Règles et les sous catégories qu’elle contient, et inversement en la décochant.
Une fois terminé, on sauvegarde, et toutes les Règles sont mises à jour en même temps que la Directive. Un gain de temps énorme !
Lifting du formulaire de Directive
Nous avons rafraîchi le formulaire de Directive pour le rendre plus facile à utiliser et plus accessible.
La première chose que vous verrez en ouvrant une Directive, c’est que le formulaire est maintenant divisé en trois onglets :
- Informations : les informations générales sur la Directive (nom, description …),
- Paramètres : les paramètres de configuration liés à la Directive,
- Target Rules : l’application effective de la Directive par Rudder.
En divisant ainsi l’information, nous espérons que le formulaire sera plus lisible et plus agréable à utiliser.
Enfin, seconde modification : le bouton de sauvegarde et les boutons d’action (suppression, clone, …) sont plus facilement accessibles. Nous les avons mis en dehors du formulaire, et limité la taille de ce dernier, ce qui permet de rendre les boutons toujours visibles sans avoir à faire défiler la page entière pour y accéder.
Configuration de CFEngine
Deux nouveaux paramètres de configuration sont modifiables depuis l’interface web, ils concernent tous les deux le protocole de communication entre un noeud et le serveur Rudder et sa sécurité.
Ces deux paramètres sont :
- DenyBadClocks: détermine si le serveur va refuser les connexions venant de noeuds désynchronisés (différence de date, de plu de 5 minutes). Désactivez cette option si les horloges de vos noeuds ne sont pas synchronisées. Voir https://cfengine.com/docs/3.5/reference-components-cfserver.html#denybadclocks.
- SkipIdentify: détermine si le serveur doit vérifier la résolution inverse des adresses IPs de vos noeuds. Désactivez cette option si votre DNS n’inclut pas des entrée reverse pour tous vos noeuds. Voir https://cfengine.com/archive/manuals/cf3-Reference#skipidentify-in-agent.
Avec ces deux paramètres, votre serveur Rudder sera plus malléable en fonction de vos besoins (serveurs ayant des horloges désynchronisées par exemple), sans toutefois réduire considérablement la sécurité des échanges client-serveur.
Binaire CFEngine directement dans le path
Actuellement pour lancer l’exécution d’un agent, il faut taper la commande complète : /var/rudder/cfengine-community/bin/cf-agent -KI. Même si l’on s’habitue à taper automatiquement le chemin complet, il faut reconnaître que ce n’est pas très pratique.
À partir de la version 2.9, tout ceci est fini : pour lancer l’agent il vous suffit maintenant de taper cf-agent -KI et le tour est joué. On s’y habitue très vite !
Autres améliorations
D’autres petites améliorations ont été faites dans l’interface web :
- Les Directives non appliquées sont maintenant signalées dans la liste par une icône d’avertissement,
- Les Techniques sans Directives ne sont plus affichées dans l’écran de configuration d’une Règle, réduisant ainsi l’espace pris dans l’interface web et clarifiant les choix disponibles,
- Les tableaux se souviennent du nombre d’entrées à afficher et de la page que vous consultiez, plus besoin de modifier à chaque fois.
Le mot de la fin
Et voilà pour Rudder 2.9 Liberty ship ! La mise à jour vers cette version nécessite de disposer de Techniques adaptées pour CFEngine 3.5. Si vous disposez d’un serveur en version 2.8, tout est bon, il suffit de mettre à jour votre serveur en 2.9, et les agents peuvent rester en version 2.8. Sinon, il faut avoir mis à jour auparavant votre serveur Rudder vers les dernières 2.4, 2.6 et 2.7 (à partir de la 2.4.11, 2.6.8 et 2.7.5), puis mettre à jour les agents des noeuds en 2.9, puis finalement mettre à jour le serveur en 2.9. Vous trouverez la procédure complète de mise à jour dans la documentation.
Cette release n’a pas encore été déclarée “stable”. Toutefois, nous testons minutieusement nos nouvelles releases et considérons qu’elles sont prêtes à être déployées en production. Pour être déclarée stable, nous préférons attendre qu’une version ait plusieurs mois d’existence, qu’elle ait pu tourner pendant un temps considérable sur plusieurs systèmes en production. À ce titre, la version 2.8 devrait bientôt être promue “stable”.
Nous tenons beaucoup à notre communauté et votre soutien est particulièrement apprécié. Nous sommes preneurs de retours, idées, rapports de bugs, ou autres. Nous sommes à votre écoute ! N’hésitez pas à nous rejoindre sur IRC (#rudder sur Freenode), nous serons très heureux de vous y accueillir, de répondre à vos questions et d’écouter vos retours.
Le changelog complet de la 2.9 est ici.
La documentation de la 2.9 est consultable en ligne (ou directement depuis votre serveur Rudder!)