Et voici la dernière release de Rudder, la version 2.7.0 ‘Powerboat’ ! Dans ce post, nous allons faire une courte présentation des nouvelles fonctionnalités, des dernières corrections de bugs et de l’amélioration globale des performances qui ont été ajoutées.
Pour vous fournir cette version, nous avons dû affronter la chaleur torride (~35°C) de Paris et les absences dues aux vacances. La bêta est sortie mi-juillet et la version finale le 31 du même mois (juste à temps dans notre calendrier de release !).
Dans “Powerboat”, nous nous sommes concentrés sur deux nouveaux ajouts majeurs : une API Rest et des paramètres globaux de configuration. Je pense que cette version devrait être déclarée stable plus rapidement que la version 2.6 car ses features ont beaucoup moins d’impact sur l’ensemble de Rudder.
Les nouvelles features sont :
-
API REST : vous pouvez maintenant interagir avec Rudder sans passer par la webapp,
-
Paramètres globaux: vous pouvez définir des Paramètres à utiliser dans toutes vos Directives,
-
Amélioration des performances : la génération de promesses et les rendus de certaines pages (Directive, Groups) devraient être beaucoup plus rapides,
-
Création facile de Directive dans toutes les versions de Techniques : les Directives, basées sur différentes versions de Techniques, peuvent être créées d’un coup dans la version désirée,
-
Recherche de Noeud : vous pouvez désormais créer des groupes basés sur des critères ne correspondant pas à une expression régulière,
-
Documentation: la documentation est maintenant disponible directement dans la webapp,
-
Divers changements d’UI : plusieurs petites améliorations (pages déplacées, nouveau style, etc.)
API REST
Avant la 2.7, l’appli web était le seul point d’interaction avec Rudder. Il existait déjà une API très limitée, mais son utilité était vraiment très spécifique (rechargement de la technique librairie, archivage, etc.).
Avec la 2.7, vous pouvez réaliser quasiment tout ce qu’il a été possible de faire avec la webapp grâce à l’API :
-
Créer/modifier/supprimer les Règles / Directives / Groupes,
-
Accepter/supprimer les Noeuds,
-
Créer vos propres scripts pour interagir avec Rudder.
Pour utiliser cette nouvelle fonctionnalité, il vous faudra créer un compte d’API via l’interface de Rudder. Aller dans: Administration -> API Accounts puis cliquer sur Add API Account :
Nous pensons que l’API deviendra l’une des principaux moyens d’utilisation de Rudder, car elle vous permet d’automatiser des taches, qui seraient sinon très longues à accomplir (activation/désactivation en masse de Règles, accepter plusieurs noeuds) tout en utilisant en parallèle l’application web.
La documentation de l’API est disponible en ligne.
Pourquoi ne pas nous rejoindre sur IRC (#rudder sur Freenode) pour discuter de la façon dont vous voudriez vous servir de l’API ? Nous serions très contents de faire votre connaissance et de partager nos expériences respectives !
Paramètres globaux
Vous pouvez maintenant définir des paramètres à utiliser dans toutes vos Directives.
Parfois, vous avez besoin de partager une valeur entre toutes vos machines et d’utiliser cette valeur dans plusieurs Directives. Avant la 2.7, il fallait définir une variable CFEngine contenant cette valeur puis l’appeler dans toutes vos Directives. C’était effectivement compliqué et fastidieux de réaliser cette tache (définir toutes ces “generic variable”, ne pas oublier d’en appliquer une sur toutes les machines, etc.). Avec la 2.7, c’est beaucoup plus pratique ! Vous avez juste à aller dans la page de configuration des Paramètres, il vous suffira alors d’ajouter un nouveau Paramètre à la liste et de définir sa valeur (voir Configuration -> Parameters).
Puis, dans chaque Directive où vous voulez utiliser ce paramètre, vous pouvez y faire référence en utilisant : ${rudder.param.parameter_name}.
Dans la 2.7, nous avons introduit un paramètre par défaut rudder_file_edit_header utilisé comme en-tête pour chaque fichier géré par Rudder. Pour personnaliser vos en-têtes, c’est très simple : vous n’avez qu’à modifier la valeur de ce paramètre puis à la prochaine exécution de l’agent, tous les fichiers disposeront de cette en-tête :
Performances améliorées
Nous avons beaucoup amélioré la façon dont nous gérons les Directives/Groups ainsi que la génération de promesses. Grâce à toutes ces améliorations, l’utilisation de la webapp est bien plus agréable et nettement plus réactive.
Avant, avec un grand nombre de déploiements, l’affichage des Directives pouvait prendre quelques secondes, la génération de promesses pouvait, quant à elle, durer plusieurs minutes. Maintenant, la génération de promesses est bien plus rapide (x 10) et les pages de Groups/Directives sont quasiment instantanées.
Créer des Directives dans n’importe quelle version facilement
Il n’y a plus besoin de créer une Directive dans la dernière version de sa Technique avant de la migrer vers la version désirée. Vous pouvez maintenant choisir directement la version que vous souhaitez de la Technique avant de créer une nouvelle Directive.
Critère de recherche de noeuds ne “matchant” pas une regexp
Vous pouvez maintenant créer un groupe de noeuds basé sur une regexp ne “matchant pas”, par exemple : exclure des noeuds d’un sous-réseau or exclure un package en particulier.
Vous n’avez plus à écrire tous vos critères d’exclusion, une seule regexp fera l’affaire. Avant la 2.7, Si vous vouliez exclure les noeuds avec un hostname rudder[1-5], il fallait créer cinq critères “not”: Avec la 2.7, une ligne suffit :
Documentation
Nous avons inclus la documentation de Rudder dans le serveur Rudder, et nous l’avons rendu accessible sur chaque page de la webapp. Plus besoin d’être en ligne, elle fait partie de l’installation. Il vous suffit de cliquer sur le lien User Manual dans le coin supérieur droit.
Vous pouvez également consulter la documentation en ligne.
Différents changements d’UI
Quelques petites améliorations dans la webapp :
-
La page concernant la Technique Library est maintenant disponible dans la partie Administration. Nous pensons que la gestion des Techniques devrait être réalisée par les utilisateurs les plus expérimentés,
-
Cliquer sur la section des Node vous redirigera vers la page listant les différents Noeuds gérés par Rudder, au lieu de vous envoyer vers la page de recherche des Noeuds,
-
Les boutons de suppression sont maintenant mis en évidence avec un fond rouge, montrant ainsi que supprimer un élément dans Rudder est une action importante. Ne vous inquiétez pas si vous appuyez sur ce bouton par erreur, une popup de confirmation vous permettra de revenir en arrière.
Résumé
C’est tout pour cette version 2.7 Powerboat ! La mettre à jour depuis la 2.6 ne devrait pas poser de problème. Nous avons essayé d’ajouter de nouvelles manières d’utiliser Rudder, de le rendre plus rapide, plus facile et la gestion de votre SI plus agréable.
Comme dit précédemment, cette release n’a pas encore été déclarée “stable” bien que cela ne devrait plus trop tarder.
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.7 est ici.