Introduction à Rudder
Mise à jour :
Dans ce premier tutoriel, nous verrons comment installer un serveur rudder localement sur votre machine en utilisant une stack Vagrant. Nous verrons aussi comment configurer plusieurs nodes.
Présentation de Rudder
Rudder est un logiciel open source de gestion de configuration. Il se veut simple d’utilisation en proposant une interface utilisateur écrite en scala. Rudder, contrairement à Ansible, s’appuie sur des agents légers installés sur chacun des nodes pour déployer les configurations.
Le serveur RUDDER est appelé le master
et les clients les nodes
. Sur le
master les configuration sont déclarées et ce sont les agents tournant sur les
nodes qui se charge de les appliquer. Dans le cas où la configuration décrite
n’est pas celle présente sur le node, l’agent appliquera les changements
nécessaires pour la respecter en utilisant CFEngine.
Rudder prend en charge des nodes provisionnés avec la plupart des distributions Linux. Windows Server, Solaris et AIX sont également supportés via une souscription.
Les configurations permettent :
- d’installer des packages en utilisant les gestionnaires de packages des OS cibles.
- de configurer les paramètres et services tournant sur les nodes.
- de créer et maintenir des comptes et les groupes d’utilisateurs.
- de construire un système durci en configurant puis en contrôlant que les règles de sécurité sont toujours appliquées.
- d’appliquer des configurations aux middlewares en utilisant des templates.
- …
Rudder peut être étendu via des plugins ↗. On retrouve :
- Un système de gestion d’application de patchs OS.
- Des systèmes de contrôle de compliance ISO 27001, PCI-DSS, NIST
- Openscap, que je vous ai déjà présenté avec son utilisation pour développer des rôles Ansible proposant des options pour durcir les systèmes d’exploitation
- CIS, un autre système d’audit de sécurité
- Gestion des bastions Wallix
- Gestion de Vault pour le stockage des secrets
- Authentification
- Zabbix, Centreon
- …
Certains de ces plugins sont gratuits et d’autres sont propriétaires et nécessitent une licence.
Notions importantes
Avant de commencer à utiliser Rudder, il est important de mettre en place son vocabulaire technique.
Techniques
Les Techniques sont les squelettes de configuration, adapté à une fonction ou à un service particulier (par ex. Configuration du DNS). Ce squelette comprend la logique de configuration pour cette fonction ou ce service et peut être défini selon une liste de variables (dans le même exemple: adresses IP des serveurs DNS, la zone de recherche par défaut, etc)
La bibliothèque standard de Rudder ne fournit que les techniques les plus courantes. Vous pouvez créer de nouvelles techniques avec l’Éditeur de Technique.
Directives
Les directives sont les instances d’une technique qui permet de définir des valeurs aux paramètres de cette technique. Chaque directive peut avoir un nom unique. Une directive doit être complétée par une description et les valeurs pour les paramètres définies dans la technique.
Groupe de nodes
Il est possible de créer un groupe de nœuds basé sur des critères de recherche pour faciliter l’attribution Règles de gestion de la configuration. Par exemple : un groupe par version de système d’exploitation, un groupe par environnement, un groupe par fonction, etc
Rules
Les rules permettent de définir l’application d’une ou plusieurs directives à un groupe de nœuds.
Installation de Rudder
Comme dit précédemment, je vais l’installer sur ma machine de développement en utilisant Vagrant et le provider libvirt. Vous pouvez utiliser le Vagrantfile ↗ fourni par l’éditeur qui lui utilise le provider Virtualbox.
Mon vagrantfile
:
Ce vagrantfile
provisionne un master et 3 nodes. Si vous voulez moins ou plus de
nodes, il suffit de changer la variable nb_nodes
.
Allez, on provisionne :
Au bout de 2-3 minutes l’application est disponible à l’adresse https://localhost:8081 ↗
Utilisation de Rudder
Nous allons voir comment prendre en main rapidement Rudder.
Ligne de commande rudder.
Sur les nodes
et le master
, vous avez à votre disposition une CLI
(utilitaire de ligne de commande) qui permet de lancer un certain nombre
d’actions comme :
- mettre à jour l’inventaire des
nodes
, récupère l’ensemble des informations des nodes : caractéristiques techniques, disques, packages, services, OS, etc - d’obtenir des informations sur un
node
- …
L’utilisation de la CLI permet de lancer plus rapidement des actions que via
l’interface. Cette CLI doit être lancé avec le compte root
.
Vous pouvez obtenir plus d’infos en utilisant l’option help
.
Prise en main de l’interface de Rudder
L’interface est vraiment bien faite et une fois les concepts compris (voir ci-dessus) vous devriez vous en sortir.
Ajout d’un node
Dans notre cas nos nodes
sont déjà déctectés
puisque vagrant
s’est chargé de
les déclarer via l’outil setup
. Mais il faut les accepter et pour cela, il faut
se rendre dans le menu pending nodes
.
Cochez-les nodes
et acceptez-les.
Création d’un groupe
Nous allons créer un groupe dynamique Ubuntu 22.04. Allez dans le menu groups
et cliquez sur [Create].
Saisissez les informations de nom et une description, puis cliquez sur [Create]. On peut ensuite ajouter des critères pour qu’il n’accepte que les nodes tournant sous Ubuntu 22.04.
Rentrez les critères comme dans l’image ci-dessus. Cliquez sur [Search], vous
devriez voir apparaître nos 3 nodes
.
Création d’une directive
Nous allons créer une directive package
installant openscap
sur les nodes
ubuntu 22.04. Allez dans le menu directives et cliquez package
dans la liste
des techniques cliquez packages puis [Create]
Dans les parmètres, complétez nom avec openscap et dans les packages entrez
libopenscap8 python3-openscap
. Finissez par [Save].
Création d’une rules
Nous allons créer une | qui installe le package openscap
sur le group
ubuntu 22.04. Allez dans le menu rules, puis cliquez sur [Create] et dans
la partie directive sélection package OpenScap
et dans group Ubuntu 22.04
et saisissez le nom Ubuntu 22.04 OpenScap
. Finissez par [Save]
Application des rules
Il existe deux méthodes :
- par la CLI depuis le node server :
rudder remote run node2.rudder.local
.
- par l’interface en allant dans nodes / Compliance reports et cliquez sur
Trigger Agent
.
Normalement les packages vont s’installer et dans le rapport de compliance, vous devriez voir que tout s’est passé comme attendu.
Conclusion
Rudder est un outil de gestion de configuration plutôt convivial une
fois les concepts compris. Il est clair que cela prend un peu plus de temps que
via l’utilisation d’un DSL comme avec puppet
ou ansible
. Mais ne
connaissant pas encore totalement le produit, il existe peut-être des moyens
plus rapides pour créer tous les objets de l’interface.
Rudder est un système ouvert et par exemple, il fournit une collection Ansible permettant de le piloter et de récupérer l’inventaire.
Plus d’infos
- Site Officiel : Rudder.io ↗
- Documentation: Docs.rudder.io ↗