{%- from "linux/map.jinja" import system with context %} linux_sysfs_package: pkg.installed: - pkgs: - sysfsutils - refresh: true /etc/sysfs.d: file.directory: - require: - pkg: linux_sysfs_package {% set apply = system.get('sysfs', {}).pop('enable_apply', True) %} {%- for name, sysfs in system.get('sysfs', {}).items() %} /etc/sysfs.d/{{ name }}.conf: file.managed: - source: salt://linux/files/sysfs.conf - template: jinja - user: root - group: root - mode: 0644 - defaults: name: {{ name }} sysfs: {{ sysfs|yaml }} - require: - file: /etc/sysfs.d {%- if sysfs is mapping %} {%- set sysfs_list = [sysfs] %} {%- else %} {%- set sysfs_list = sysfs %} {%- endif %} {%- if apply %} {%- for item in sysfs_list %} {%- set list_idx = loop.index %} {%- for key, value in item.items() %} {%- if key not in ["mode", "owner"] %} {%- if grains.get('virtual_subtype', None) not in ['Docker', 'LXC'] %} {#- Sysfs cannot be set in docker, LXC, etc. #} linux_sysfs_write_{{ list_idx }}_{{ name }}_{{ key }}: module.run: - name: sysfs.write - key: {{ key }} - value: {{ value }} {%- endif %} {%- endif %} {%- endfor %} {%- endfor %} {%- endif %} {%- endfor %}