guidugli.kernel_config

Rôle Ansible : kernel_config

Un rôle Ansible qui installe et configure sysctl sur RHEL/CentOS, Fedora et Debian/Ubuntu. Ce rôle peut aussi désactiver, bloquer ou définir des modules du noyau pour démarrer automatiquement. De plus, il peut établir des règles UDEV liées à la gestion de l'alimentation.

REMARQUE : Désactiver des modules du noyau ou mettre des appareils en veille (paramètres udev) peut affecter le fonctionnement du système et nécessiter une récupération du système (connexion en mode utilisateur unique ou démarrage live).

Exigences

Système d'exploitation fonctionnant sur du matériel physique ou sur une virtualisation par hyperviseur. Selon les paramètres, ce rôle peut ne pas fonctionner correctement sur des systèmes conteneurisés.

Variables du Rôle

Les variables disponibles sont listées ci-dessous, avec des valeurs par défaut (voir defaults/main.yml):

kernel_disable_modules: ['cramfs', 'freevxfs', 'jjfs2', 'hfs', 'hfsplus', 'udf', 'squashfs',
                         'dccp', 'sctp', 'rds', 'tipc']

Utilisez cette variable pour lister les modules du noyau qui doivent être désactivés. Vous pouvez ajouter usb-storage à la liste, mais cela empêchera tout appareil de stockage USB de fonctionner. Envisagez d'utiliser USBGuard. Les valeurs par défaut fonctionneront sur la plupart des systèmes. Si le système a besoin d'utiliser certains de ces modules, écrasez cette variable avec la configuration souhaitée.

kernel_blacklist_modules: ['cramfs', 'freevxfs', 'jjfs2', 'hfs', 'hfsplus', 'udf', 'squashfs',
                           'dccp', 'sctp', 'rds', 'tipc']

Modules à bloquer. Les valeurs par défaut fonctionneront sur la plupart des systèmes. Si le système nécessite d'utiliser certains de ces modules, écrasez cette variable avec la configuration souhaitée.

#kernel_autostart_modules: ['br_netfilter']

Modules à démarrer automatiquement.

kernel_sysctl:
  • { name: fs.suid_dumpable, value: "0" }
  • { name: fs.protected_hardlinks, value: "1" }
  • { name: fs.protected_symlinks, value: "1" }
  • { name: fs.inotify.max_user_instances, value: "1024" }
  • { name: kernel.dmesg_restrict, value: "1" }
  • { name: kernel.yama.ptrace_scope, value: "1" }
  • { name: kernel.randomize_va_space, value: "2" }
  • { name: kernel.kptr_restrict, value: "1" }
  • { name: kernel.nmi_watchdog, value: "0" }
  • { name: net.ipv4.ip_forward, value: "0" }
  • { name: net.ipv4.conf.all.forwarding, value: "0" }
  • { name: net.ipv4.conf.all.send_redirects, value: "0" }
  • { name: net.ipv4.conf.default.send_redirects, value: "0" }
  • { name: net.ipv4.conf.all.accept_source_route, value: "0" }
  • { name: net.ipv4.conf.default.accept_source_route, value: "0" }
  • { name: net.ipv4.conf.all.accept_redirects, value: "0" }
  • { name: net.ipv4.conf.default.accept_redirects, value: "0" }
  • { name: net.ipv4.conf.all.secure_redirects, value: "0" }
  • { name: net.ipv4.conf.default.secure_redirects, value: "0" }
  • { name: net.ipv4.conf.all.log_martians, value: "1" }
  • { name: net.ipv4.conf.default.log_martians, value: "1" }
  • { name: net.ipv4.icmp_echo_ignore_broadcasts, value: "1" }
  • { name: net.ipv4.icmp_ignore_bogus_error_responses, value: "1" }
  • { name: net.ipv4.conf.all.rp_filter, value: "1" }
  • { name: net.ipv4.conf.default.rp_filter, value: "1" }
  • { name: net.ipv4.tcp_syncookies, value: "1" }
  • { name: net.ipv6.conf.all.disable_ipv6, value: "1" }
  • { name: net.ipv6.conf.default.disable_ipv6, value: "1" }

Spécifiez les paramètres sysctl à configurer sur le système. La configuration par défaut est adaptée pour les systèmes qui ne fonctionnent pas comme des routeurs et qui n'utilisent pas IPv6. Vérifiez les règles et écrasez cette variable si nécessaire.

kernel_sysctl_flush_network_routes: yes

Si défini sur oui, cela mettra les paramètres net.ipv4.route.flush et net.ipv6.route.flush à 1 et rechargera.

#kernel_udev_sata_link_power_mgmt: med_power_with_dipm

Politique de gestion de l'alimentation du lien SATA. Les valeurs valides sont min_power, max_performance, medium_power, med_power_with_dipm.

#kernel_udev_autosuspend_ahci_devices: yes

Mettre en veille automatique les contrôleurs AHCI et les appareils ATA.

#kernel_udev_autosuspend_scsi_devices: yes

Mettre en veille automatique les appareils scsi, driver=sd.

#kernel_udev_disable_bluetooth: no

Désactiver Bluetooth.

#kernel_udev_disable_wake_on_lan: yes

Désactiver Wake on LAN.

#kernel_udev_usb_autosuspend_devices:
#  - { vendor: '13fe', product: '5500' }   # Clé USB Silicon Power
#  - { vendor: '1532', product: '0f13', autosuspend: 120 }    # Clavier

Liste des appareils à mettre en veille automatique. Généralement, Linux met déjà en veille automatique les hubs USB et d'autres appareils, donc il n'est pas nécessaire d'utiliser cette option. Vérifiez quels appareils sont réglés sur automatique ou non en regardant /sys/bus/usb/devices/*/power/control.

#kernel_udev_pci_autosuspend_devices:
#  - { vendor: '0x8086', device: '0x0c00' }
#  - { vendor: '0x8086', device: '0x0412' }

Liste des appareils PCI à mettre en veille automatique.

#kernel_udev_enable_wlan_powersave: yes

Activer l'économie d'énergie du WLAN ?

Les variables ci-dessous n'ont pas besoin d'être modifiées pour les systèmes ciblés (voir vars/main.yml):

kernel_udev_reload_cmd: "udevadm control --reload-rules && udevadm trigger"

Commande pour recharger les règles udev.

Dépendances

Pas de dépendances.

Exemple de Playbook

- hosts: serveurs
  vars:
    kernel_disable_modules: ['cramfs', 'freevxfs', 'jjfs2', 'hfs', 'hfsplus', 'udf', 'vfat', 'squashfs']
    kernel_blacklist_modules: ['radeon', 'amdgpu']
    kernel_sysctl:
      - { name: net.ipv4.conf.all.forwarding, value: "0" }
      - { name: net.ipv4.conf.all.send_redirects, value: "0" }
      - { name: net.ipv4.conf.default.send_redirects, value: "0" }
      - { name: net.ipv4.conf.all.accept_source_route, value: "0" }
      - { name: net.ipv4.conf.default.accept_source_route, value: "0" }
      - { name: net.ipv4.conf.all.accept_redirects, value: "0" }
      - { name: net.ipv4.conf.default.accept_redirects, value: "0" }
      - { name: net.ipv4.conf.all.secure_redirects, value: "0" }
      - { name: net.ipv4.conf.default.secure_redirects, value: "0" }
      - { name: net.ipv4.conf.all.log_martians, value: "1" }
      - { name: net.ipv4.conf.default.log_martians, value: "1" }
      - { name: net.ipv4.icmp_echo_ignore_broadcasts, value: "1" }
      - { name: net.ipv4.icmp_ignore_bogus_error_responses, value: "1" }
      - { name: net.ipv4.conf.all.rp_filter, value: "1" }
      - { name: net.ipv4.conf.default.rp_filter, value: "1" }
      - { name: net.ipv4.tcp_syncookies, value: "1" }
    kernel_sysctl_flush_network_routes: yes

  roles:
     - { role: guidugli.kernel_config }

Licence

MIT / BSD

Informations sur l'Auteur

Ce rôle a été créé en 2020 par Carlos Guidugli.

À propos du projet

Disable kernel modules and configure sysctl settings on linux

Installer
ansible-galaxy install guidugli.kernel_config
Licence
mit
Téléchargements
102
Propriétaire