Aller au contenu

Premier cas d'usage Rudder : gérer des utilisateurs

Mise à jour :

Vous avez installé Rudder et accepté quelques nodes. Et maintenant ? Ce guide vous accompagne dans votre premier cas d’usage concret : créer un compte utilisateur standard sur tous vos serveurs Linux.

Ce scénario simple vous permettra de manipuler les 4 concepts fondamentaux de Rudder : Technique, Directive, Groupe et Règle.

Le scénario

Objectif : Créer un compte utilisateur devops sur tous vos serveurs Linux, avec :

  • Le paquet sudo installé (indispensable sur certaines distributions minimales)
  • Un groupe devops dédié
  • Un compte devops membre du groupe sudo (pour les droits sudo)

Pourquoi cet ordre ? On doit s’assurer que les dépendances sont satisfaites : d’abord le paquet, puis le groupe, enfin l’utilisateur. Rudder appliquera les directives dans l’ordre où elles apparaissent dans la règle.

Prérequis

  • Un serveur Rudder fonctionnel (guide d’installation)
  • Au moins 2 nodes acceptés (pour voir l’effet sur plusieurs machines)
  • Accès administrateur à l’interface web

Étape 1 : Créer la Directive “Package sudo”

Commençons par garantir que le paquet sudo est installé sur toutes les machines.

  1. Accédez aux Directives

    Dans le menu, cliquez sur Directives dans la barre latérale.

  2. Trouvez la Technique Package management

    Dans le panneau de gauche, naviguez dans l’arborescence : System settings → Package management

  3. Créez la Directive

    Cliquez sur Create et remplissez :

    ChampValeur
    NamePackage sudo
    DescriptionAssure que le paquet sudo est installé
  4. Configurez les paramètres

    ParamètreValeur
    Package namesudo
    Package statePresent
  5. Sauvegardez

    Cliquez sur Save.

Étape 2 : Créer la Directive “Group devops”

Maintenant, créons le groupe auquel appartiendra notre utilisateur.

  1. Trouvez la Technique Group management

    Dans l’arborescence : User Management → Groups

  2. Créez la Directive

    ChampValeur
    NameGroup devops
    DescriptionGroupe pour l'équipe DevOps
  3. Configurez les paramètres

    ParamètreValeur
    Group namedevops
    PolicyPresent
  4. Sauvegardez

Étape 3 : Créer la Directive “User devops”

Enfin, créons l’utilisateur qui dépend des deux éléments précédents.

  1. Trouvez la Technique User management

    Dans l’arborescence : User Management → Users

  2. Créez la Directive

    ChampValeur
    NameUser devops
    DescriptionCompte standard pour l'équipe DevOps
  3. Configurez les paramètres utilisateur

    ParamètreValeurExplication
    LogindevopsNom du compte
    PolicyPresentOn veut créer l’utilisateur
    Password(votre mot de passe hashé)Voir note ci-dessous
    Home directory/home/devopsRépertoire personnel
    Default shell/bin/bashShell par défaut
    Primary groupdevopsGroupe créé à l’étape 2
    Secondary groupssudoPour les droits sudo
  4. Sauvegardez

Configuration de la Directive dans Rudder

Étape 4 : Créer le Groupe cible

Nous allons créer un Groupe qui identifie les machines concernées.

  1. Accédez aux Groupes

    Menu Node Management → Groups.

  2. Créez un nouveau Groupe

    Cliquez sur Create en haut du panneau de gauche.

  3. Choisissez le type

    Pour ce premier exercice, nous allons créer un Groupe dynamique qui cible automatiquement tous les serveurs Linux.

  4. Configurez le Groupe

    ChampValeur
    NameAll Ubuntu Linux servers
    DescriptionAll Ubuntu Linux servers (excluding Rudder server)
    Group typeDynamic
  5. Définissez le critère

    Cliquez sur Add criteria et configurez :

    ChampValeur
    AttributeOperating System Name
    ComparatorEquals
    ValueLinux - Ubuntu

    Vous pouvez ajouter un second critère pour exclure le serveur Rudder si besoin.

  6. Prévisualisez les membres

    Cliquez sur Search pour voir quelles machines correspondent au critère. Vérifiez que vos nodes de test apparaissent.

  7. Sauvegardez

    Cliquez sur Save. Le Groupe est créé et se mettra à jour automatiquement si de nouveaux nodes Linux sont ajoutés.

Configuration du Groupe dans Rudder

Étape 5 : Créer la Règle

C’est l’étape finale : lier les 3 Directives au Groupe.

  1. Accédez aux Règles

    Menu Configuration → Rules.

  2. Créez une nouvelle Règle

    Cliquez sur Create.

  3. Remplissez les informations

    ChampValeur
    NameDevOps user on Linux servers
    Short DescriptionInstall sudo, create group and user devops
  4. Sélectionnez les 3 Directives (dans l’ordre)

    Dans la section Directives, cochez dans cet ordre :

    1. Package sudo
    2. Group devops
    3. User devops
  5. Sélectionnez le Groupe

    Dans la section Groups, cochez All Ubuntu Linux servers.

  6. Activez la Règle

    En haut de la page, assurez-vous que le switch Status est sur Enabled.

  7. Sauvegardez

    Cliquez sur Save. La Règle est active !

Étape 6 : Vérifier l’application

Maintenant que la Règle est active, voyons ce qui se passe.

Comportement normal

Par défaut, l’agent Rudder s’exécute toutes les 5 minutes. À la prochaine exécution :

  1. L’agent contacte le serveur
  2. Le serveur lui envoie les politiques applicables
  3. L’agent détecte que l’utilisateur devops n’existe pas
  4. L’agent crée l’utilisateur
  5. L’agent rapporte le succès au serveur

Forcer l’exécution immédiate

Pour ne pas attendre 5 minutes :

Via l’interface web :

  1. Allez dans Node Management → Nodes
  2. Cliquez sur un node
  3. En haut, cliquez sur Trigger Agent (icône play)

Via la ligne de commande (sur le node) :

Terminal window
sudo rudder agent run -v

Le -v (verbose) affiche le détail de ce qui se passe.

Vérifier le résultat sur le node

Connectez-vous au node et vérifiez :

Terminal window
# L'utilisateur existe ?
id devops
# Résultat attendu :
# uid=1001(devops) gid=1001(devops) groups=1001(devops),27(sudo)
# Le home existe ?
ls -la /home/devops/
# Il peut utiliser sudo ?
su - devops
sudo whoami
# Doit afficher "root"

Étape 7 : Consulter les rapports

Rudder collecte des rapports détaillés sur l’application des politiques.

Compliance par Règle

  1. Allez dans Configuration → Rules
  2. Cliquez sur votre Règle “DevOps user on Linux servers”
  3. L’onglet Nodes montre l’état par node et par directive

Vous verrez un graphique montrant :

  • ✓ Compliant — La configuration est conforme (vert)
  • ↻ RepairedRudder a dû corriger quelque chose (bleu)
  • ✗ Error — L’application a échoué (rouge)
  • ? No report — L’agent n’a pas rapporté (gris)

Compliance par Node

  1. Allez dans Node Management → Nodes
  2. Cliquez sur un node
  3. L’onglet Compliance liste toutes les Règles appliquées et leur état

Rapport de conformité dans Rudder

Comprendre les états

ÉtatSignificationAction
CompTout est conformeRien à faire
RepairedUne correction a été appliquéeNormal lors du premier déploiement
ErrorL’agent n’a pas pu appliquerConsulter les logs
No reportPas de rapport reçuVérifier la connectivité

Test de réparation automatique

Un des avantages de Rudder est la convergence continue : si quelqu’un supprime l’utilisateur manuellement, Rudder le recréera automatiquement.

Test :

Terminal window
# Sur un node, supprimez l'utilisateur
sudo userdel -r devops
# Attendez 5 minutes (ou forcez l'exécution)
sudo rudder agent run
Rudder agent 9.0.2
Node uuid: 0fe26e8b-673c-4a72-aaea-8bbe0e3509d6
ok: Rudder agent policies were updated.
Start execution with config [20251217-133040-b65124a4]
M| State Technique Component Key Message
E| compliant Common ncf Initialization Configuration library initialization was correct
E| compliant Common Update Policy and configuration library are already up to date. No action required.
E| repaired Common Security parameters Some internal security parameters were adjusted
E| compliant Common CRON Daemon CRON is correctly running
E| compliant Common Log system for reports Reports forwarding to policy server was correct
E| compliant Inventory Inventory Next inventory scheduled between 00:00 and 06:00
E| repaired groupManagement Groups devops The group devops has been updated
E| compliant packageManagement Package sudo Presence of package sudo in any version was correct
E| repaired userGroupManagement User primary group devops User devops has been created
E| repaired userManagement Password devops User devops password definition was repaired
E| repaired userGroupManagement User full name devops User devops has been created
E| repaired userGroupManagement User default shell devops User devops has been created
E| repaired userGroupManagement Home directory devops User devops has been created
E| repaired userManagement User secondary groups devops Setting secondary groups for user devops was repaired
E| repaired userGroupManagement Users devops The user devops ( Without any defined full name ) has been created on the system
## Summary #####################################################################
19 components verified in 7 directives
=> 19 components in Enforce mode
-> 6 compliant
-> 9 repaired
-> 4 not-applicable
Execution time: 0.81s
################################################################################
# Vérifiez que l'utilisateur est recréé
id devops

Dans les rapports, vous verrez un statut Repaired pour ce node.

Aller plus loin

Ajouter une clé SSH

La technique “Users” ne gère pas les clés SSH. Utilisez la technique dédiée “SSH authorised keys” :

  1. Allez dans DirectivesRemote Access → SSH authorised keys
  2. Créez une nouvelle Directive “SSH key devops”
  3. Configurez :
    • Tag : devops-ssh-key
    • Username : devops
    • SSH key : collez la clé publique (ssh-ed25519 AAAA... ou ssh-rsa AAAA...)
  4. Ajoutez cette Directive à votre Règle existante
  5. Sauvegardez

Différencier par environnement

Si vous voulez des configurations différentes en prod et en dev :

  1. Créez deux Groupes : “Linux Production” et “Linux Development”
  2. Créez deux Directives avec des paramètres différents (ex: différentes clés SSH)
  3. Créez deux Règles liant chaque Directive à son Groupe

Supprimer un utilisateur

Pour supprimer l’utilisateur :

  1. Éditez la Directive
  2. Changez “Present/Absent” en Absent
  3. Sauvegardez

À la prochaine exécution, l’utilisateur sera supprimé de toutes les machines.

Dépannage

L’utilisateur n’est pas créé

Vérifiez les logs sur le node :

Terminal window
sudo rudder agent run -v 2>&1 | grep -i user

Causes fréquentes :

  • Le groupe sudo n’existe pas sur ce système (essayez wheel sur RHEL)
  • Le hash du mot de passe est invalide
  • Permissions insuffisantes (agent ne tourne pas en root)

Le rapport reste en “No report”

Terminal window
# Sur le node, vérifiez que l'agent fonctionne
sudo systemctl status rudder-agent
# Forcez l'envoi des rapports
sudo rudder agent inventory
sudo rudder agent run

La Directive ne s’applique pas

Vérifiez que :

  1. La Règle est Enabled
  2. La Directive est bien sélectionnée dans la Règle
  3. Le Groupe contient bien les nodes attendus (bouton Search)

À retenir

  1. Le flux complet : Technique → Directive → Groupe → Règle
  2. Attendez 5 minutes ou forcez l’exécution avec rudder agent run
  3. Les rapports vous indiquent l’état de conformité
  4. Rudder maintient l’état : si quelqu’un défait votre travail, Rudder le refait
  5. Testez d’abord sur un petit groupe avant un déploiement global
  6. Les mots de passe doivent toujours être hashés (SHA-512)

Liens utiles