include: - systemd.reload {% import_yaml 'systemd/units/unittypes.yaml' as unittypes %} {% for unittype, units in pillar.get('systemd', {}).items() %} {% if unittype in unittypes.get('Valid') %} {% for unit, unitconfig in units.items() %} {% set unit_status = 'disable' if unitconfig.enabled is defined and unitconfig.enabled == false else 'enable' %} {% set dropin = unitconfig.dropin | default(false) %} systemd_systemd_units_file_{{ unit }}_{{ unittype }}: file.managed: {%- if dropin %} - name: /etc/systemd/system/{{ unit }}.{{ unittype }}.d/salt-override.conf - makedirs: True {%- else %} - name: /etc/systemd/system/{{ unit }}.{{ unittype }} {%- endif %} - template: jinja - source: salt://systemd/units/unit.jinja - context: config: {{ unitconfig|json }} - watch_in: - cmd: reload_systemd_configuration systemd_systemd_units_cmd_enable_or_disable_{{ unit }}_{{ unittype }}: cmd.wait: - name: systemctl {{ unit_status }} {{ unit }}.{{ unittype }} - watch: - cmd: reload_systemd_configuration {% if (unittype == 'service' or unittype == 'path') %} {% set activation_status = unitconfig.status if unitconfig.status is defined and unitconfig.status == 'start' else 'stop' %} systemd_systemd_units_activate_or_deactivate_{{ unit }}_{{ unittype }}: cmd.wait: - name: systemctl {{ activation_status }} {{ unit }}.{{ unittype }} - require: - cmd: systemd_systemd_units_cmd_enable_or_disable_{{ unit }}_{{ unittype }} - cmd: reload_systemd_configuration - watch: - cmd: reload_systemd_configuration {% endif %} {% endfor %} {% endif %} {% endfor %}