Un agent RUDDER pour gérer les Raspberry Pi

Posté par  (site web personnel) . Édité par Davy Defaud, valentin.napoli et ZeroHeure. Modéré par Pierre Jarillon. Licence CC By‑SA.
31
31
août
2017
Administration système

Les machines à architecture ARM sont maintenant très répandues, des appareils mobiles aux serveurs en passant par les machines embarquées, poussées par la « révolution IoT » (Internet of Things Revolution, l’Internet des objets connectés). Une bonne partie de ces machines utilise un système d’exploitation classique (distribution GNU/Linux, etc.) et les problématiques habituelles de gestion d’infrastructure se posent : supervision, gestion de configuration, etc.

Suite à la sortie d’une version de l’agent RUDDER pour Raspberry Pi, nous allons aborder la gestion de configuration et de l’audit de conformité sur des machines présentant des contraintes liées à ces cas d’utilisation :

  • faible puissance des machines ;
  • latence réseau importante, réseaux potentiellement isolés ;
  • consommation réseau limitée.

Sommaire

RUDDER est une solution libre et multi‐plate‐forme de gestion de configuration et d’audit en continu (Continuous Configuration), visant particulièrement les besoins d’infrastructure de production. Vous pouvez trouver une présentation plus détaillée dans la dépêche de sortie de la version 4, ou sur le site Web du projet.

Dashboard de RUDDER

Problématiques

Au‐delà d’une utilisation domestique, quand ces machines sont utilisées à plus grande échelle (IoT, etc.) des problématiques de gestion d’infrastructure se posent : sécurité, supervision, déploiement, etc. Les solution utilisées sur des serveurs ne sont pas forcément adaptées à ce nouveau contexte.

Faible puissance

Au vu de la faible puissance des machines, les outils de gestion doivent être légers et ne pas accaparer les ressources. Ainsi, certains outils utilisés habituellement sur des serveurs plus puissants ne sont pas adaptés.

Réseau limité

Contrairement à un environnement datacenter, les machines embarquées ont souvent accès à un réseau de qualité variable, parfois très limité en volume (réseaux mobiles de type 3G/4G), voire pas d’accès au réseau pendant des périodes plus ou moins longues. Il faut donc plutôt limiter la consommation réseau et accepter une remontée d’information moins précise.
Un outil de gestion de configuration autonome, basé sur un agent, permettra d’appliquer la configuration même en cas de déconnexion, ce qui ne serait pas possible avec un outil ne disposant pas d’agent ou avec un agent piloté depuis le serveur.

Sécurité

L’utilisation d’un outil de gestion de configuration et d’audit donne la capacité de mettre à jour les programmes et la configuration rapidement et à distance.

Utilisation de RUDDER

Installation

RUDDER utilise un agent installé sur chaque machine gérée pour assurer la configuration et la conformité en permanence. Un agent pour Raspbian Jessie est disponible en test et sera officiellement supporté par la suite ; l’équipe de développement est preneuse de retours concernant son utilisation.

Il faut évidemment avoir un serveur RUDDER installé (documentation d’installation), l’agent s’installe simplement sur Raspberry Pi 3 (avec Raspbian Jessie) par les commandes :

wget https://www.rudder-project.org/temporary/rudder-agent_4.1.6-0_armhf.deb
dpkg -i rudder-agent_4.1.6-0_armhf.deb

Cet agent est compatible ARMv7, une documentation est disponible pour le compiler soi-même sur d’autres environnements.

Configuration

Nous pouvons configurer une politique à appliquer à notre agent. L’installation permet de gérer des composants de base du système (utilisateurs, clefs et serveur SSH, etc.), l’éditeur de techniques permet de développer simplement de nouvelles politiques de configuration sans avoir à apprendre le langage sous‐jacent :
Éditeur de techniques

Certaines options peuvent se révéler utiles dans un contexte d’IoT, comme :

  • passer en mode « Non‐conformités uniquement » pour la remontée des rapports de l’agent, pour n’envoyer que les changements et les erreurs, et se passer des rapports corrects, permettant de diminuer fortement la consommation réseau. En cas d’absence d’événement à envoyer, l’agent produira un heartbeat régulièrement pour faire la différence avec un nœud non accessible ;
  • la fréquence d’exécution, par défaut à cinq minutes, peut être réduite jusqu’à six heures ;
  • dans le cas de réseaux séparés, il peut être judicieux d’utiliser des serveurs relais. Ils permettent de centraliser les flux d’un ensemble de machines vers le serveur central et donc de réduire les problèmes réseau en se rapprochant des machines gérées.

Nous pouvons maintenant appliquer la configuration à notre machine et mesurer la consommation de ressources :

Résumé d’une exécution de l’agent sur Raspberry Pi 3

  • la mise à jour des politiques de configuration consomme autour de deux kilo‐octets quand il n’y a pas eu de changement de configuration cible, et environ 45 kilo‐octets quand une mise à jour est nécessaire. La remontée des rapports d’exécution représente quelques kilo‐octets (plus s’il y a de nombreux changements). Ainsi, passée une phase de configuration initiale qui peut générer un trafic plus important, l’agent consomme très peu de volume réseau ;
  • la mémoire consommée (RSS) lors de l’exécution se situe autour de 20 Mio ;
  • un cœur est utilisé, pour une durée de 10 secondes à 40 secondes pour une cinquantaine de composants vérifiés ou configurés ;
  • l’agent utilise au total autour de 120 Mio d’espace disque, qui pourraient encore être réduits par l’utilisation d’un paquet embarquant moins de dépendances (nommé rudder-agent-thin, pas encore disponible sur ARM pour l’instant).

Les rapports d’exécution sont envoyés au serveur, qui nous fournit un calcul de conformité : Affichage global de la conformité de la machine

Avec possibilité de rentrer dans les détails : Détail d’une non‐conformité

Conclusion

L’équipe de développement de RUDDER est preneuse de vos avis, qu’ils concernent les besoins de gestion d’infrastructure sur des GNU/Linux embarqués/IoT, ou plus particulièrement sur l’utilisation de notre nouvel agent dans ce contexte !

La prise en charge va continuer à s’améliorer à l’avenir, avec plus de système d’exploitation gérés sur ARM et plus d’architectures (notamment AArch64).

Pour en savoir plus et tester RUDDER, vous pouvez :

Aller plus loin

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.