| {%- from "linux/map.jinja" import system with context %} |
| {%- from "linux/map.jinja" import sysctl_min_kernel %} |
| {%- if system.enabled %} |
| |
| {%- if system.kernel is defined %} |
| |
| {%- set kernel_boot_opts = [] %} |
| {%- do kernel_boot_opts.append('isolcpus=' ~ system.kernel.isolcpu) if system.kernel.isolcpu is defined %} |
| {%- do kernel_boot_opts.append('elevator=' ~ system.kernel.elevator) if system.kernel.elevator is defined %} |
| {%- do kernel_boot_opts.extend(system.kernel.boot_options) if system.kernel.boot_options is defined %} |
| |
| include: |
| - linux.system.grub |
| |
| {%- if kernel_boot_opts %} |
| /etc/default/grub.d/99-custom-settings.cfg: |
| file.managed: |
| - contents: 'GRUB_CMDLINE_LINUX_DEFAULT="$GRUB_CMDLINE_LINUX_DEFAULT {{ kernel_boot_opts|join(' ') }}"' |
| - require: |
| - file: grub_d_directory |
| {%- if grains.get('virtual_subtype', None) not in ['Docker', 'LXC'] %} |
| - watch_in: |
| - cmd: grub_update |
| {%- endif %} |
| {%- endif %} |
| |
| {%- if system.kernel.version is defined and grains.get('os_family') == 'Debian' %} |
| |
| linux_kernel_package: |
| pkg.installed: |
| - pkgs: |
| - linux-image-{{ system.kernel.version }}-{{ system.kernel.type|default('generic') }} |
| {%- if system.kernel.get('headers', False) %} |
| - linux-headers-{{ system.kernel.version }}-{{ system.kernel.type|default('generic') }} |
| {%- endif %} |
| {%- if system.kernel.get('extra', False) %} |
| - linux-image-extra-{{ system.kernel.version }}-{{ system.kernel.type|default('generic') }} |
| {%- endif %} |
| {%- if system.kernel.hwe is defined %} |
| {%- set osVersion = salt['grains.get']('osrelease') %} |
| {%- set hweVersion = system.kernel.hwe.get('version', osVersion) %} |
| {%- set hwePackageVersion = system.kernel.hwe.get('kernel_version', system.kernel.version|replace('-', '.')) + '*' %} |
| {%- set hweType = system.kernel.hwe.get('type', 'generic') %} |
| - linux-image-{{ hweType }}-hwe-{{ hweVersion }} : {{ hwePackageVersion }} |
| {%- if system.kernel.get('headers', False) %} |
| - linux-headers-{{ hweType }}-hwe-{{ hweVersion }} : {{ hwePackageVersion }} |
| {%- endif %} |
| {%- if hweType == 'virtual' %} |
| - linux-image-extra-{{ hweType }}-hwe-{{ hweVersion }} : {{ hwePackageVersion }} |
| {%- endif %} |
| {%- endif %} |
| - refresh: true |
| |
| |
| {%- if system.kernel.hwe is defined %} |
| {%- set exlcudeRule = system.kernel.version + '|hwe' %} |
| {%- else %} |
| {%- set exlcudeRule = system.kernel.version %} |
| {%- endif %} |
| |
| # Not very Salt-ish.. :-( |
| linux_kernel_old_absent: |
| cmd.wait: |
| - name: "dpkg -l '*linux-generic-*[0-9]*' '*linux-image-*[0-9]*' '*linux-headers-*[0-9]*' '*linux-modules-*[0-9]*' '*linux-image-extra-*[0-9]*' | grep -E '^ii' | awk '{print $2}' | grep -vE '{{ exlcudeRule }}' | xargs dpkg --purge --force-depends" |
| - watch: |
| - pkg: linux_kernel_package |
| |
| {%- endif %} |
| |
| |
| {%- for module in system.kernel.get('modules', []) %} |
| |
| linux_kernel_module_{{ module }}: |
| kmod.present: |
| - name: {{ module }} |
| - persist: true |
| |
| {%- endfor %} |
| |
| {%- if system.kernel.module is defined %} |
| |
| modprobe_d_directory: |
| file.directory: |
| - name: /etc/modprobe.d |
| - user: root |
| - group: root |
| - mode: 755 |
| |
| {%- for module_name in system.kernel.module %} |
| |
| /etc/modprobe.d/{{ module_name }}.conf: |
| file.managed: |
| - user: root |
| - group: root |
| - mode: 0644 |
| - template: jinja |
| - source: salt://linux/files/modprobe.conf.jinja |
| - defaults: |
| module_name: {{ module_name }} |
| - require: |
| - file: modprobe_d_directory |
| |
| {%- endfor %} |
| {%- endif %} |
| |
| {%- set cur_kernel = salt['grains.get']('kernelrelease') %} |
| |
| {%- for sysctl_name, sysctl_value in system.kernel.get('sysctl', {}).items() %} |
| |
| {%- if not sysctl_name in sysctl_min_kernel or salt['pkg.version_cmp'](cur_kernel, sysctl_min_kernel[sysctl_name]) >= 0 %} |
| |
| linux_kernel_{{ sysctl_name }}: |
| sysctl.present: |
| - name: {{ sysctl_name }} |
| - value: {{ sysctl_value }} |
| |
| {%- endif %} |
| |
| {%- endfor %} |
| |
| {%- endif %} |
| |
| {%- endif %} |