ansible.posix.sysctl: gère les paramètres kernel runtime via sysctl (fichiers /etc/sysctl.conf ou /etc/sysctl.d/*.conf). Cas d'usage RHCE 2026 typiques : IP forwarding, ajuster les buffers réseau, durcir la sécurité kernel (kernel.kptr_restrict, net.ipv4.tcp_syncookies).
Module de la collection ansible.posix. Options critiques : name:, value:, state:, sysctl_file: (chemin custom), reload: (relance sysctl -p quand le fichier change, true par défaut), sysctl_set: (applique aussi la valeur au runtime, false par défaut).
Ce que vous allez apprendre
Section intitulée « Ce que vous allez apprendre »- Modifier un paramètre kernel avec persistance et application immédiate.
- Choisir entre
/etc/sysctl.conf(legacy) et/etc/sysctl.d/<file>.conf(modulaire). - Distinguer modification runtime vs persistée.
- Pattern CIS : durcissement complet via fichier dédié.
- Diagnostiquer un paramètre qui revient à sa valeur par défaut après reboot.
Prérequis
Section intitulée « Prérequis »- Avoir
ansible.posixinstallé :ansible-galaxy collection install ansible.posix. - Connaître les paramètres kernel courants (
man sysctl).
Modification basique avec reload: true
Section intitulée « Modification basique avec reload: true »- name: Activer l IP forwarding (persistant + immediat) ansible.posix.sysctl: name: net.ipv4.ip_forward value: '1' state: present reload: trueLe module modifie /etc/sysctl.conf (par défaut). L'option reload: vaut true par défaut : dès que le fichier change, le module lance sysctl -p, qui recharge les valeurs. Avec reload: false, le paramètre est écrit mais pas appliqué au runtime, il faut un sysctl -p manuel ou un reboot. L'option sysctl_set: (false par défaut) ajoute une vérification : le module compare la valeur réelle du noyau à la valeur demandée et la corrige avec sysctl -w si elles diffèrent, même quand le fichier est déjà à jour.
Règle : laissez reload: à true pour l'effet immédiat après une modification du fichier, et ajoutez sysctl_set: true si le noyau peut avoir dérivé de ce que dit le fichier (valeur changée à la main avec sysctl -w).
Pattern modulaire : sysctl_file:
Section intitulée « Pattern modulaire : sysctl_file: »Plutôt que tout entasser dans /etc/sysctl.conf, mieux vaut un fichier par rôle dans /etc/sysctl.d/ :
- name: Tuning reseau dans /etc/sysctl.d/99-rhce-lab.conf ansible.posix.sysctl: name: "{{ item.name }}" value: "{{ item.value }}" state: present sysctl_file: /etc/sysctl.d/99-rhce-lab.conf reload: true loop: - { name: net.core.somaxconn, value: '4096' } - { name: net.ipv4.tcp_max_syn_backlog, value: '8192' } - { name: net.ipv4.tcp_syncookies, value: '1' }Avantages :
- Versionné dans le repo Ansible (
fetch:pour audit). - Supprimable proprement via
state: absent. - Préfixe numérique (
99-) contrôle l'ordre de chargement (cf.systemd-sysctl(8): ordre alphabétique).
Pattern durcissement CIS
Section intitulée « Pattern durcissement CIS »Le CIS Benchmark RHEL impose une dizaine de paramètres sysctl pour le durcissement :
- name: Durcissement CIS (sysctl) ansible.posix.sysctl: name: "{{ item.name }}" value: "{{ item.value }}" state: present sysctl_file: /etc/sysctl.d/99-cis-hardening.conf reload: true loop: # Reseau - { name: net.ipv4.conf.all.send_redirects, value: '0' } - { name: net.ipv4.conf.all.accept_redirects, value: '0' } - { name: net.ipv4.conf.all.accept_source_route, value: '0' } - { name: net.ipv4.tcp_syncookies, value: '1' }
# Securite kernel - { name: kernel.kptr_restrict, value: '2' } - { name: kernel.dmesg_restrict, value: '1' } - { name: kernel.randomize_va_space, value: '2' }
# FS - { name: fs.suid_dumpable, value: '0' }Pattern liste de dicts + loop: rend le code propre et auditable (un fichier dédié, paramètres groupés, modifiable sans toucher au playbook).
Suppression d'un paramètre
Section intitulée « Suppression d'un paramètre »- name: Retirer le tuning si plus necessaire ansible.posix.sysctl: name: net.core.somaxconn state: absent sysctl_file: /etc/sysctl.d/99-rhce-lab.conf reload: truestate: absent retire la ligne du fichier. Mais si le paramètre était surchargé via plusieurs fichiers (/etc/sysctl.conf + /etc/sysctl.d/99-app.conf), le deuxième prend le relais après reload : toujours auditer après suppression.
Le piège : interfaces réseau dynamiques
Section intitulée « Le piège : interfaces réseau dynamiques »Certains paramètres incluent des noms d'interface :
# ❌ Suppose que l interface s appelle eth0- name: Régler le paramètre noyau net.ipv4.conf.eth0.forwarding ansible.posix.sysctl: name: net.ipv4.conf.eth0.forwarding value: '1'Sur RHEL 10, les interfaces s'appellent souvent enp0s3, ens18, etc. Pattern défensif :
- name: Activer forwarding sur l interface principale ansible.posix.sysctl: name: "net.ipv4.conf.{{ ansible_default_ipv4.interface }}.forwarding" value: '1' state: present reload: trueansible_default_ipv4.interface est le fact qui donne le nom de l'interface principale, fonctionne sur n'importe quelle distro.
Pièges courants
Section intitulée « Pièges courants »Les deux premières lignes opposent les deux moitiés du travail, écrire la valeur et l'appliquer : l'une sans l'autre donne soit un réglage sans effet, soit un effet qui ne survit pas au redémarrage. La troisième vient du conflit entre fichiers, que seul l'ordre de lecture tranche, et la dernière du nom d'interface, qui ne s'écrit jamais en dur.
| Symptôme | Cause | Fix |
|---|---|---|
| Paramètre revient au défaut après reboot | Pas de fichier persistant (juste sysctl -w) | Toujours state: present + sysctl_file: |
| Modification ignorée au runtime | reload: false posé explicitement, ou valeur du noyau changée à la main alors que le fichier est déjà bon | Retirer reload: false (le défaut est true) ou ajouter sysctl_set: true |
| Conflit entre fichiers | Plusieurs fichiers définissent le même param | Vérifier l'ordre (préfixe numérique) |
| Paramètre interface non trouvé | Interface n'existe pas (eth0 sur RHEL 10) | Utiliser ansible_default_ipv4.interface |
À retenir
Section intitulée « À retenir »ansible.posix.sysctl:= paramètres kernel persistés.reload:vauttruepar défaut :sysctl -pest relancé quand le fichier change.sysctl_set: true(défautfalse) applique aussi la valeur au runtime avecsysctl -w.sysctl_file: /etc/sysctl.d/<name>.conf= pattern modulaire préféré.- Préfixe numérique dans
sysctl.d/contrôle l'ordre (99-= appliqué dernier). - Pattern CIS : un fichier dédié
/etc/sysctl.d/99-cis-hardening.conf.
Contrôle de connaissances
Section intitulée « Contrôle de connaissances »Vérifiez que l'essentiel de ce guide est acquis. Les questions portent uniquement sur ce qui vient d'être expliqué ici.
Contrôle de connaissances
Validez vos connaissances avec ce quiz interactif
Informations
- Le chronomètre démarre au clic sur Démarrer
- Questions à choix multiples, vrai/faux et réponses courtes
- Vous pouvez naviguer entre les questions
- Les résultats détaillés sont affichés à la fin
Lance le quiz et démarre le chronomètre
Vérification
(0/0)Score par domaine
Un domaine regroupe plusieurs guides et reçoit plusieurs questions : son score est plus fiable qu'un score par thème, qui porte souvent sur une seule question.
Bilan
Points forts
Aucun sujet réussi à 80 % sur au moins deux questions pour l’instant.
Points faibles
Aucun sujet sous le seuil de réussite.
À faire ensuite
Des indices pour retenter votre chance ?
Continuer le cours : Module mount
Nouveau quiz complet avec des questions aléatoires
Retravailler uniquement les questions ratées
Retour à la liste des certifications
Mettre en pratique
Section intitulée « Mettre en pratique »Un paramètre kernel bien écrit dans un fichier mais jamais appliqué reste inutile, et l'inverse est tout aussi vrai. Ce lab vous fait poser ip_forward, tcp_syncookies et swappiness dans un fichier dédié sous /etc/sysctl.d/, avec reload: true pour que la valeur prenne effet sans attendre. La vérification lit ce que sysctl retourne réellement, en plus du contenu du fichier, ce qui couvre les deux moitiés du travail.