kernel_config

Ansible Роль: kernel_config

Эта роль Ansible устанавливает и настраивает sysctl на RHEL/CentOS, Fedora и Debian/Ubuntu. Также данная роль может отключать, заносить в черный список или устанавливать автозагрузку модулей ядра. Кроме того, можно настраивать правила UDEV, связанные с управлением питанием.

ПРИМЕЧАНИЕ: Отключение модулей ядра или установка устройств в спящий режим (настройки udev) может повлиять на работу системы и потребовать восстановления системы (вход в однопользовательский режим или даже загрузку с Live CD).

Требования

Операционная система должна работать на "голом" железе или на гипервизоре. В зависимости от настроек эта роль может некорректно работать в контейнеризированных системах.

Переменные роли

Доступные переменные перечислены ниже с их значениями по умолчанию (см. defaults/main.yml):

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

Используйте эту переменную, чтобы указать, какие модули ядра следует отключить. Вы можете добавить usb-storage в список, но это предотвратит работу любых USB-накопителей. Рассмотрите возможность использования USBGuard. Значения по умолчанию будут работать на большинстве систем. Если системе необходимо использовать некоторые из этих модулей, измените эту переменную на нужную конфигурацию.

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

Модули, которые должны быть в черном списке. Значения по умолчанию будут работать на большинстве систем. Если системе необходимо использовать некоторые из этих модулей, измените эту переменную на нужную конфигурацию.

#kernel_autostart_modules: ['br_netfilter']

Модули, которые должны запускаться автоматически.

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" }

Укажите параметры sysctl, которые должны быть настроены в системе. Конфигурация по умолчанию подходит для систем, которые не выступают в роли маршрутизаторов и не используют IPv6. Проверьте правила и измените эту переменную при необходимости.

kernel_sysctl_flush_network_routes: yes

Если установлено значение yes, оно установит настройки net.ipv4.route.flush и net.ipv6.route.flush в 1 и перезагрузит их.

#kernel_udev_sata_link_power_mgmt: med_power_with_dipm

Политика управления питанием для SATA Link. Допустимые значения: min_power, max_performance, medium_power, med_power_with_dipm.

#kernel_udev_autosuspend_ahci_devices: yes

Автоматическое приостановление контроллеров AHCI и ATA устройств.

#kernel_udev_autosuspend_scsi_devices: yes

Автоматическое приостановление устройств SCSI, драйвер=sd.

#kernel_udev_disable_bluetooth: no

Отключить Bluetooth.

#kernel_udev_disable_wake_on_lan: yes

Отключить пробуждение по сети.

#kernel_udev_usb_autosuspend_devices:
#  - { vendor: '13fe', product: '5500' }   # USB флеш-накопитель Silicon power
#  - { vendor: '1532', product: '0f13', autosuspend: 120 }    # Клавиатура

Список устройств для автоматического приостановления. Обычно Linux уже устанавливает автоматическое приостановление для USB-хабов и других устройств, поэтому нет необходимости использовать эту опцию для них. Проверьте, какие устройства настроены на автоматический режим, посмотрев на /sys/bus/usb/devices/*/power/control.

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

Список PCI-устройств для автоматического приостановления.

#kernel_udev_enable_wlan_powersave: yes

Включить режим энергосбережения для wlan?

Переменные, перечисленные ниже, не требуют изменения для целевых систем (см. vars/main.yml):

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

Команда для перезагрузки правил udev.

Зависимости

Нет зависимостей.

Пример плейбука

- hosts: servers
  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 }

Лицензия

MIT / BSD

Информация об авторе

Эта роль была создана в 2020 году Карлосом Гидугли.

О проекте

Disable kernel modules and configure sysctl settings on linux

Установить
ansible-galaxy install guidugli/ansible-role-kernel_config
Лицензия
mit
Загрузки
91
Владелец