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: webserver01
Dans 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.com
Le 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: present
Dans 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: yes
Ici, 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: yes
L’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: yes
Ici, 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 UNIX
Le 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: yes
Le 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: staff
Permet de modifier l’UID et le groupe principal de l’utilisateur.
Utilisation avancée
- Gérer les groupes secondaires : utilisez
groups
etappend
pour ajouter sans écraser. - Gérer l’expiration : le paramètre
expires
accepte un timestamp UNIX. - Verrouillage/déverrouillage :
password_lock
permet de bloquer ou débloquer un compte. - Gestion du home :
create_home
pour créer le répertoire,move_home
pour déplacer un home existant. - Suppression complète :
remove: yes
supprime 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),absent
password
: 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: present
Dans 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: absent
Ici, 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: present
Le 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: present
Permet 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: present
Le 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: yes
Le 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: yes
pour créer des groupes réservés au système. - Définir ou modifier le GID : le paramètre
gid
permet de fixer ou changer l’identifiant du groupe. - Forcer la suppression :
force: yes
permet 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),absent
gid
: 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: passwd
Cette 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: admins
Permet 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: localhost
Retourne 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: whoami
Dans 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: 300
Ici, 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: 10
Le 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_command
permet 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_delay
etpost_reboot_delay
permettent de gérer des délais avant et après le redémarrage. - Gestion des timeouts :
reboot_timeout
définit la durée maximale d’attente pour la reconnexion,connect_timeout
le 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: absent
Supprime 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: yes
La 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
env
pour 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: absent
supprime 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),absent
disabled
: 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.