C’est en ce début du mois de Novembre 2013 qu’est sorti la dernière version de Rudder, la version 2.8.0 “Patrol boat” ! Dans ce post, nous allons faire une courte présentation des nouvelles fonctionnalités et des dernières corrections de bugs.
Une période de développement assez courte pour cette nouvelle version (un petit peu moins d’un mois), mais plusieurs features pour vous rendre l’utilisation de Rudder toujours plus agréable (configuration de l’application depuis l’interface web) et de nouvelles possibilités (serveurs relais) ont été apportées.
Dans “Patrol Boat”, les principaux ajouts et les nouvelles features sont :
- Paramétrage de Rudder directement depuis l’interface web : plus besoin de farfouiller un fichier de config pour certaines d’entres elles,
- Serveurs relais : des sous serveurs Rudder permettant de répartir vos machines, tout en les gérant depuis le même serveur root,
- Workflow de validation : le workflow de validation peut maintenant être managé depuis l’API REST,
- HTTP/S activé par défaut : plus de sécurité pour l’application, sans avoir à en changer la configuration,
- Amélioration globale de l’affichage des Directives : de nombreuses améliorations quant à la page des Directives, des informations plus pertinentes, une réduction de l’affichage superflu,
- Modifications des Techniques : ajout du support d’Android, d’une nouvelle Technique permettant de gérer les partitions, ainsi que d’autres améliorations,
- Rudder utilise maintenant CFEngine 3.5, plus particulièrement la dernière version sortie la 3.5.2
- Amélioration des performances concernant le reporting : les exécutions des agents sont maintenant stockés dans une table séparée,
- De nombreuses modifications concernant le packaging (option statut pour rudder-server-root, meilleure gestion des logs, des inventaires, …),
- Quelques petites améliorations au niveau de l’application web : plus de logs, un warning lorsqu’une Règle n’est appliquée à aucun groupe et/ou n’applique aucune Directive.
Paramétrage depuis l’interface web :
Dans les versions actuelles de Rudder, modifier un paramètre de l’application vous oblige à deux choses : aller trouver et modifier la propriété voulue dans le fichier de configuration (/opt/rudder/etc/rudder-web.properties) et redémarrer l’application (/etc/init.d/jetty restart).
En version 2.8, nous avons commencé à extraire certaines propriété du fichier de configuration pour pouvoir les gérer directement dans l’interface web, sans avoir a redémarrer l’application. Les fonctionnalité configurables sont :
- Message de changement : possibilité d’ajouter un message pour chaque changement de configuration opéré dans l’interface web. Les paramètres sont :
- L’activation de la fonctionnalité,
- L’obligation du message,
- Le message utilisé pour prévenir l’utilisation de cette fonctionnalité.
- Workflow de Validation : Pour pouvoir valider les différents changements réalisés dans l’interface web avant de les déployer dans votre environnement :
- L’activation de la fonctionnalité,
- L’obligation de valider/déployer un changement par une personne différente de son auteur.
Serveurs relais :
Rudder permet maintenant la mise en place de serveur relais, mais qu’est ce qu’un serveur relai ?
Un serveur relai va servir d’intermédiaire entre le serveur Rudder et un ensemble de nœuds (appartenant à des sous réseaux inaccessibles au serveur Rudder). Il s’agit d’un nœud géré par le serveur, qui va rendre disponible les promesses générées par le serveur Rudder pour ce sous ensemble de nœuds, et remonter les rapport émis par ceux-ci vers le serveur Rudder.
La procédure pour créer un serveur relai est disponible dans notre documentation à cette adresse : http://www.rudder-project.org/rudder-doc-2.8/rudder-doc.html#relay-servers. Vous n’avez plus qu’à suivre les instructions et vous pourrez ainsi profiter de cette nouvelle fonctionnalité.
API REST pour le workflow de validation :
En 2.7, nous avions ajouté une API pour gérer la plupart des éléments de Rudder (Règles, Directives, Groupes et Nœuds).
Mais lorsque les workflow de validation sont activés, pas moyen en 2.7 de valider ces demandes de changement en passant par l’API.
Cette fonctionnalité a été ajoutée à l’API pour la version 2.8. Chaque Change Request peut maintenant être gérée via l’API. On peut lister toutes les Change Requests disponibles selon différents filtres, regarder plus en détails une Change Request, les accepter, les refuser ou bien modifier leurs informations.
De cette manière Rudder est complètement utilisable en dehors de l’interface web. Le déploiement des changements peut ainsi être automatisé : par exemple, un script automatisant le déploiement des changements lancé tous les jours à 23h…
Pour plus d’informations et d’exemples, vous pouvez consulter la documentation de l’API REST.
HTTP/S par défaut :
Rudder propose maintenant une connectivité HTTP/S par défaut. Ainsi, tout échange avec le serveur Rudder est chiffré, offrant une confidentialité optimale à l’utilisateur et s’intégrant dans l’optique d’une infrastructure plus sécurisée.
Affichage des Directives :
Nous avons procédé à pas mal de changements au niveau de l’affichage des Directives :
- La version de Technique utilisée par chaque Directive est maintenant affichée dans l’arbre des Directives. Plus besoin de regarder dans chaque Directive si elles sont bien toutes à jour.
- Les informations internes à la Directive (Identifiant, Technique utilisée, …) prennent maintenant moins de place et sont maintenant cachées par défaut, permettant de mieux se concentrer sur les paramètres de configuration.
- Pour certaines Directives, les sections facultatives ne sont plus dépliées. Pour plus d’information voir la section des Techniques
Du nouveau dans les Techniques :
Notre communauté fut très active au niveau des Techniques, avec deux belles contributions :
- Android est maintenant complètement supporté par l’ensemble des Techniques, permettant l’application et la propagation de promesses CFEngine valides pour Android. Merci à Cédric Cabessa (de GENYMOBILE) qui a réalisé ceci avec l’aide de Matthieu Cerda (Kegeruneku chez Normation)
- Une nouvelle Technique permettant de gérer les partitions sur le serveur: Il s’agit de notre première technique entièrement écrite par la communauté, un grand merci à Olivier Mauras (coredumb) pour sa contribution.
- Certaines Techniques ont été modifiées pour que les Directives basés sur celles ci n’affichent plus de sections facultatives. Ces Techniques sont:
- aptPackageManagerSettings Version 1.0
- zmdPackageManagerSettings Version 1.0
- zypperPackageManagerSettings Version 1.0
- fileManagement Version 2.0
- checkGenericFileContent Version 3.2
- copyGitFile Version 1.5
- dnsConfiguration Version 1.1
- sshConfiguration Version 2.0
Rudder utilise maintenant CFEngine 3.5 :
Tous les agents Rudder utilisent maintenant CFEngine 3.5.2 (auparavant 3.4.4), ce qui permettra de profiter des nouvelles fonctionnalités introduites dans CFEngine 3.5 (https://cfengine.com/docs/3.5/whats-new.html) et des corrections de bugs incluses dans ces versions.
Nous avons dû faire de nombreux changements dans nos Techniques pour les valider en CFEngine 3.5 (le parser étant devenu plus strict), il vous faudra d’abord vous assurer d’être dans les dernières versions release (2.4.11, 2.6.8 et 2.7.5) avant de mettre à jour votre Rudder. La procédure est entièrement documentée ici : http://www.rudder-project.org/rudder-doc-2.8/rudder-doc.html#_upgrade_rudder
Amélioration globale des performances :
Pour réaliser certaines opérations (reporting, date du dernier rapport, …), nous faisons des requêtes sur l’énorme base contenant tous les rapports alors que nous nous intéresserons souvent qu’à un sous ensemble de ces informations.
Nous stockons maintenant des informations sur les dates d’exécution de chaque agent dans une table séparée, ce qui nous permet de ne plus avoir à interagir avec cette énorme base de données.
Les gains de performance pour l’affichage de la page listant les nœuds et les différentes pages de reporting sont assez impressionnants.
Lors de la migration vers la 2.8, un script de mise à jour va être lancé pour repérer chaque exécution ayant eu lieu dans la table des rapports, ce script peut être assez long, ne vous inquiétez pas si la mise à jour prend du temps.
Autres améliorations notables :
Nous avons procédé à quelques petits changements qui devraient vous rendre l’utilisation de Rudder plus agréable.
- Les inventaires en erreur ne vont plus rester dans /var/rudder/inventories/incoming, empêchant l’arrivée de nouveaux inventaires, ils seront maintenant envoyés dans /var/ruddder/inventories/failed,
- Ajout d’une fonction “status” à /etc/init.d/rudder-server-root pour afficher l’état des différents composants de Rudder,
- Ajout de nouveaux type d’erreur (erreurs dans rudder-users.xml) et de débug (lorsqu’une Change Request n’est plus validable) dans les fichiers de log
- La fonction ‘delaycompress’ appliquée par logrotate sur tous les fichiers, ainsi que de nouveau logs pour apache2
- Warning quand une Règle n’est appliquée à aucun groupe et/ou n’applique aucune Directive.
Résumé :
Et voilà pour Rudder 2.8 Patrol boat ! La mise à jour vers cette version nécessite de disposer de Techniques adaptées pour CFEngine 3.5. Pour ce faire, 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). La procédure complète est disponible dans la documentation ici.
Comme dit précédemment, cette release n’a pas encore été déclarée “stable”. Toutefois, nous testons minutieusement nos nouvelles release et considérons qu’elles sont prêtes à etre déployer en entreprise. Pour être déclarée stable, nous préférons attendre qu’une version ait plusieurs mois d’existence, qu’elle ait pu tournée pendant un temps sur plusieurs systèmes en production. À ce titre, la version 2.7 devrait bientôt être validée.
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.8 est ici.
La documentation de la 2.8 est consultable en ligne (ou directement depuis votre serveur Rudder!)