Modules Ansible de Configuration Système
Mise à jour :

Ansible propose de nombreux modules dédiés à la gestion et à la configuration des systèmes. Ces modules permettent d’automatiser la gestion des utilisateurs, des groupes, des tâches planifiées, des paramètres système, de la sécurité, des points de montage et bien plus encore. Ce guide présente les principaux modules de configuration système, leurs usages courants et des exemples pratiques.
Le module ansible hostname
Le module hostname permet de gérer le nom d’hôte (hostname) des systèmes
distants. Il est utilisé pour définir, modifier ou vérifier le nom d’hôte d’une
machine, ce qui est essentiel pour l’identification des serveurs dans un réseau,
la configuration DNS, ou encore l’intégration dans des environnements
automatisés.
Définir le nom d’hôte
- name: Définir le nom d’hôte ansible.builtin.hostname: name: webserver01Dans cet exemple, le nom d’hôte de la machine sera défini sur webserver01.
Définir un nom d’hôte avec un domaine complet (FQDN)
- name: Définir un FQDN comme nom d’hôte ansible.builtin.hostname: name: app01.example.comLe nom d’hôte sera défini avec le nom de domaine complet, ce qui peut être utile pour l’intégration dans un annuaire ou une infrastructure DNS.
Vérifier et appliquer le nom d’hôte uniquement si nécessaire
- name: Appliquer le nom d’hôte seulement s’il est différent ansible.builtin.hostname: name: "{{ inventory_hostname }}"Cela permet de s’assurer que le nom d’hôte correspond à celui attendu dans l’inventaire Ansible.
Le module ansible user
Le module user permet de gérer les comptes utilisateurs sur les systèmes
distants. Il offre une gestion complète : création, modification, suppression
d’utilisateurs, gestion des groupes, des mots de passe, des clés SSH, de
l’expiration de compte, etc. Ce module est essentiel pour automatiser la gestion
des accès et garantir la cohérence des environnements.
Créer un utilisateur avec mot de passe et shell personnalisé
- name: Créer un utilisateur avec un shell spécifique ansible.builtin.user: name: alice password: "{{ 'motdepasse' | password_hash('sha512') }}" shell: /bin/bash state: presentDans cet exemple, l’utilisateur alice est créé avec un mot de passe chiffré et
le shell /bin/bash.
Supprimer un utilisateur et son répertoire home
- name: Supprimer un utilisateur et son home ansible.builtin.user: name: bob state: absent remove: yesIci, l’utilisateur bob est supprimé ainsi que son répertoire personnel.
Ajouter un utilisateur à plusieurs groupes
- name: Ajouter un utilisateur à plusieurs groupes ansible.builtin.user: name: dev groups: "sudo,developers" append: yesL’utilisateur dev est ajouté aux groupes sudo et developers sans perdre
ses groupes existants.
Définir ou modifier le répertoire home
- name: Créer un utilisateur avec un home personnalisé ansible.builtin.user: name: testuser home: /data/testuser create_home: yesIci, le répertoire personnel de testuser sera /data/testuser et sera créé
s’il n’existe pas.
Gérer la clé SSH d’un utilisateur
- name: Ajouter une clé SSH à l'utilisateur ansible.builtin.user: name: alice ssh_key: "ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQE..."Permet d’ajouter une clé publique SSH à l’utilisateur.
Expirer un compte utilisateur
- name: Expirer un compte utilisateur ansible.builtin.user: name: temporaire expires: 1700000000 # Timestamp UNIXLe compte temporaire expirera à la date spécifiée.
Verrouiller ou déverrouiller un compte
- name: Verrouiller un compte utilisateur ansible.builtin.user: name: alice password_lock: yesLe compte alice sera verrouillé (impossible de se connecter).
Changer l’UID ou le GID d’un utilisateur
- name: Changer l'UID et le GID ansible.builtin.user: name: alice uid: 1050 group: staffPermet de modifier l’UID et le groupe principal de l’utilisateur.
Utilisation avancée
- Gérer les groupes secondaires : utilisez
groupsetappendpour ajouter sans écraser. - Gérer l’expiration : le paramètre
expiresaccepte un timestamp UNIX. - Verrouillage/déverrouillage :
password_lockpermet de bloquer ou débloquer un compte. - Gestion du home :
create_homepour créer le répertoire,move_homepour déplacer un home existant. - Suppression complète :
remove: yessupprime le home et la boîte mail lors de la suppression de l’utilisateur.
Résumé des principaux paramètres
name: nom de l’utilisateur (obligatoire)state:present(par défaut),absentpassword: mot de passe chiffré (utiliser un filtre commepassword_hash)groups: groupes secondairesappend: ajouter aux groupes existants (yes/no)shell: shell de connexionhome: chemin du répertoire homecreate_home: créer le home si absent (yes/no)remove: supprimer le home et la boîte mail lors de la suppressionssh_key/ssh_key_file: gérer les clés SSHexpires: date d’expiration du compte (timestamp UNIX)password_lock: verrouiller/déverrouiller le compteuid/gid: UID et GID personnalisés
Le module user est donc un outil incontournable pour automatiser la gestion
des comptes utilisateurs avec Ansible, garantissant sécurité, cohérence et
traçabilité sur l’ensemble de votre infrastructure.
Pour plus de détails et d’options avancées, consultez la documentation officielle du module group ↗.
Le module ansible group
Le module group permet de gérer les groupes d’utilisateurs sur les systèmes
distants. Il offre la possibilité de créer, modifier ou supprimer des groupes,
de définir leur GID, de gérer leur état système, et d’assurer la cohérence des
droits d’accès sur vos machines. Ce module est essentiel pour organiser les
utilisateurs et contrôler les permissions de façon centralisée.
Créer un groupe
- name: Créer un groupe ansible.builtin.group: name: admins state: presentDans cet exemple, le groupe admins est créé s’il n’existe pas déjà.
Supprimer un groupe
- name: Supprimer un groupe ansible.builtin.group: name: oldgroup state: absentIci, le groupe oldgroup sera supprimé du système.
Définir un GID spécifique
- name: Créer un groupe avec un GID spécifique ansible.builtin.group: name: devs gid: 1050 state: presentLe groupe devs sera créé avec le GID 1050.
Modifier le GID d’un groupe existant
- name: Modifier le GID d’un groupe existant ansible.builtin.group: name: staff gid: 2000 state: presentPermet de changer le GID du groupe staff si besoin.
Créer un groupe système
- name: Créer un groupe système ansible.builtin.group: name: sysgroup system: yes state: presentLe groupe sysgroup sera créé comme groupe système (GID généralement < 1000).
Forcer la suppression d’un groupe même s’il est utilisé
- name: Forcer la suppression d’un groupe utilisé ansible.builtin.group: name: tempgroup state: absent force: yesLe groupe tempgroup sera supprimé même s’il est encore utilisé par des
utilisateurs.
Utilisation avancée
- Gérer les groupes système : utilisez
system: yespour créer des groupes réservés au système. - Définir ou modifier le GID : le paramètre
gidpermet de fixer ou changer l’identifiant du groupe. - Forcer la suppression :
force: yespermet de supprimer un groupe même s’il est encore référencé. - Compatibilité multi-plateforme : fonctionne sur la plupart des systèmes Unix/Linux.
Résumé des principaux paramètres
name: nom du groupe (obligatoire)state:present(par défaut),absentgid: identifiant numérique du groupesystem: créer un groupe système (yes/no)force: forcer la suppression du groupe même s’il est utilisé (yes/no)
Le module group est donc un outil fondamental pour organiser et sécuriser la
gestion des utilisateurs sur vos systèmes avec Ansible, en assurant une
administration centralisée et reproductible des groupes.
Pour plus de détails et d’options avancées, consultez la documentation officielle du module group ↗.
Le module ansible getent
Le module getent permet d’interroger les bases de données système (comme
passwd, group, hosts, services, etc.) via la commande Unix getent. Il est
utile pour récupérer des informations sur les utilisateurs, groupes, hôtes, ou
autres ressources gérées par les bases de données NSS (Name Service Switch). Ce
module est particulièrement pratique pour effectuer des vérifications, des
audits ou pour conditionner des tâches selon l’état réel du système.
Récupérer tous les utilisateurs du système
- name: Lister tous les utilisateurs ansible.builtin.getent: database: passwdCette tâche retourne la liste complète des utilisateurs présents dans la base
passwd.
Vérifier l’existence d’un groupe
- name: Vérifier l’existence d’un groupe ansible.builtin.getent: database: group key: adminsPermet de vérifier si le groupe admins existe sur la machine cible.
Récupérer une entrée spécifique dans une base
- name: Récupérer une entrée spécifique dans hosts ansible.builtin.getent: database: hosts key: localhostRetourne les informations associées à localhost dans la base hosts.
Utilisation avancée
- Interroger d’autres bases : vous pouvez utiliser ce module avec d’autres
bases comme
services,protocols,networks, etc. - Utilisation conditionnelle : les résultats peuvent être utilisés dans des tâches suivantes pour conditionner l’exécution selon la présence ou l’absence d’une entrée.
- Audit et reporting : idéal pour générer des rapports sur l’état réel des utilisateurs, groupes ou services sur un parc de machines.
Résumé des principaux paramètres
database: nom de la base à interroger (passwd,group,hosts,services, etc.) (obligatoire)key: entrée spécifique à rechercher (optionnel)
Le module getent est donc un outil précieux pour interroger dynamiquement les
bases de données système et adapter vos playbooks à l’état réel des ressources
sur vos machines.
Le module ansible reboot
Le module reboot permet de redémarrer proprement les hôtes distants et
d’attendre qu’ils soient de nouveau accessibles avant de poursuivre l’exécution
du playbook. Il est particulièrement utile lors de mises à jour système, de
changements de configuration nécessitant un redémarrage, ou dans les scénarios
d’automatisation cloud et CI/CD.
Redémarrer un serveur et attendre sa disponibilité
- name: Redémarrer le serveur et attendre qu'il soit de nouveau disponible ansible.builtin.reboot: reboot_timeout: 600 test_command: whoamiDans cet exemple, la machine distante est redémarrée. Ansible attend jusqu’à 10
minutes (reboot_timeout: 600) que l’hôte soit de nouveau accessible, en
testant la commande whoami pour valider la connexion.
Redémarrer avec un délai avant la reconnexion
- name: Redémarrer avec un délai avant la reconnexion ansible.builtin.reboot: pre_reboot_delay: 5 post_reboot_delay: 20 reboot_timeout: 300Ici, Ansible attend 5 secondes avant le redémarrage, puis 20 secondes après le redémarrage avant de tenter de se reconnecter.
Redémarrer un hôte Windows
- name: Redémarrer un hôte Windows ansible.builtin.reboot: reboot_timeout: 900 connect_timeout: 10Le module fonctionne aussi avec les hôtes Windows, en adaptant les paramètres de connexion.
Utilisation avancée
- Personnaliser la commande de test : le paramètre
test_commandpermet de spécifier une commande à exécuter pour vérifier que le système est bien revenu en ligne. - Délais personnalisés :
pre_reboot_delayetpost_reboot_delaypermettent de gérer des délais avant et après le redémarrage. - Gestion des timeouts :
reboot_timeoutdéfinit la durée maximale d’attente pour la reconnexion,connect_timeoutle délai de chaque tentative. - Compatibilité multi-plateforme : fonctionne sur la plupart des systèmes Linux, Unix et Windows.
Résumé des principaux paramètres
reboot_timeout: durée maximale d’attente pour la reconnexion (en secondes)test_command: commande à exécuter pour valider la disponibilité de l’hôtepre_reboot_delay: délai avant le redémarrage (en secondes)post_reboot_delay: délai après le redémarrage avant de tenter la reconnexionconnect_timeout: délai de chaque tentative de connexion
Le module reboot est donc un outil indispensable pour automatiser les
opérations de redémarrage dans vos playbooks Ansible, en garantissant la reprise
des opérations uniquement lorsque les systèmes sont réellement prêts.
Pour plus de détails et d’options avancées, consultez la documentation officielle du module reboot ↗.
Le module ansible cron
Le module cron permet de gérer les tâches planifiées (crontab) des
utilisateurs sur les systèmes distants. Il offre la possibilité d’ajouter,
modifier, désactiver ou supprimer des entrées cron, ce qui est essentiel pour
automatiser des scripts, des sauvegardes ou toute tâche récurrente sur vos
serveurs.
Ajouter une tâche cron
- name: Ajouter une tâche cron pour une sauvegarde quotidienne ansible.builtin.cron: name: "Backup quotidien" minute: "0" hour: "2" job: "/usr/local/bin/backup.sh"Cette tâche planifie l’exécution du script /usr/local/bin/backup.sh tous les
jours à 2h du matin.
Supprimer une tâche cron
- name: Supprimer une tâche cron ansible.builtin.cron: name: "Backup quotidien" state: absentSupprime l’entrée cron nommée “Backup quotidien” de la crontab de l’utilisateur.
Désactiver une tâche cron sans la supprimer
- name: Désactiver une tâche cron sans la supprimer ansible.builtin.cron: name: "Backup quotidien" disabled: yesLa tâche reste dans la crontab mais est commentée et donc inactive.
Ajouter une tâche cron pour un utilisateur spécifique
- name: Ajouter une tâche cron pour l'utilisateur alice ansible.builtin.cron: name: "Nettoyage temporaire" user: alice minute: "30" hour: "3" job: "/usr/local/bin/clean_tmp.sh"La tâche sera ajoutée à la crontab de l’utilisateur alice.
Utilisation avancée
- Variables d’environnement : utilisez le paramètre
envpour définir des variables d’environnement dans la crontab. - Gestion fine de la planification : tous les champs cron (
minute,hour,day,month,weekday) sont disponibles pour une planification précise. - Suppression ciblée : le paramètre
state: absentsupprime uniquement l’entrée correspondant au nom donné, sans affecter les autres tâches.
Résumé des principaux paramètres
name: nom de la tâche cron (obligatoire pour l’identification)job: commande à exécuterminute,hour,day,month,weekday: planification de la tâcheuser: utilisateur cible (par défaut, root)state:present(par défaut),absentdisabled: désactiver la tâche sans la supprimer (yes/no)env: définir une variable d’environnement
Le module cron est donc un outil incontournable pour automatiser et
centraliser la gestion des tâches planifiées sur vos systèmes avec Ansible.
Pour plus de détails et d’options avancées, consultez la documentation officielle du module cron ↗.
Contrôle de connaissances
Pourquoi ce contrôle ?
Cet contrôle va vous permettre de valider vos connaissances sur le sujet abordé dans le guide. Il comporte des QCM, des questions vrai/faux et des réponses ouvertes à un mot.
🕒 Le chronomètre commence dès que vous cliquez sur Démarrer le test. Vous devrez terminer l’examen avant la fin du temps imparti.
🎯 Pour réussir, vous devez obtenir au moins 80% de bonnes réponses.
💡 Je ne fournis pas directement les réponses aux questions. Cependant, si certaines sont complexes, des pistes d’explication pourront être proposées dans le guide ou après l’examen.
Bonne chance ! 🚀
Conclusion
Les modules Ansible de configuration système offrent une large gamme d’outils pour automatiser la gestion des utilisateurs, groupes, tâches planifiées, points de montage et bien plus encore. En utilisant ces modules, vous pouvez garantir la cohérence, la sécurité et l’efficacité de vos environnements systèmes. Que ce soit pour des opérations simples ou des scénarios complexes, Ansible vous permet de gérer vos systèmes de manière centralisée et reproductible.