diff --git a/nut/map.jinja b/nut/map.jinja index 88fb925..78480e0 100644 --- a/nut/map.jinja +++ b/nut/map.jinja @@ -39,3 +39,26 @@ {%- set macos_group = salt['cmd.run']("stat -f '%Sg' /dev/console") %} {%- do nut.update({'group': macos_group}) %} {%- endif %} + + +{# BEGIN: Post-processing for multi-UPS + Debian 10/12 nut-driver@ups #} +{%- set os_ver = grains.get('osrelease', '0') | int %} +{%- set ups_units = salt['pillar.get']('nut:server:ups:config:units', {}) %} +{%- set ups_keys = ups_units.keys() | list %} + +{%- if os_ver < 12 %} + {# Debian 10 : one service only nut-driver #} + {%- do nut.setdefault('server', {}).setdefault('ups', {}).update({ + 'services': [{'name': 'nut-driver', 'enabled': True}] + }) %} +{%- else %} + {# Debian 12+ : un service par UPS #} + {%- set services = [] %} + {%- for ups in ups_keys %} + {%- do services.append({'name': 'nut-driver@' ~ ups, 'enabled': True}) %} + {%- endfor %} + {%- do nut.setdefault('server', {}).setdefault('ups', {}).update({ + 'services': services + }) %} +{%- endif %} +{# END: Post-processing for multi-UPS + Debian 10/12 nut-driver@ups #} \ No newline at end of file diff --git a/nut/server/service/running.sls b/nut/server/service/running.sls index ded3f79..f1820cf 100644 --- a/nut/server/service/running.sls +++ b/nut/server/service/running.sls @@ -1,6 +1,8 @@ # -*- coding: utf-8 -*- # vim: ft=sls +{%- from "nut/map.jinja" import nut as nutmap with context %} + {#- Get the `tplroot` from `tpldir` #} {%- set tplroot = tpldir.split('/')[0] %} {%- set sls_config_file = tplroot ~ '.config.file' %} @@ -17,17 +19,19 @@ include: - {{ sls_server_config_upsd }} - {{ sls_server_config_users }} -nut-server-service-running-ups-service-running: +{%- for svc in nutmap.server.ups.services %} +nut-server-service-running-ups-service-running-{{ loop.index }}: service.running: - - name: {{ nut.server.ups.service.name }} - - enable: {{ nut.server.ups.service.enabled }} + - name: {{ svc.name }} + - enable: {{ svc.enabled }} - watch: - sls: {{ sls_server_config_mode }} - sls: {{ sls_server_config_ups }} - sls: {{ sls_server_config_upsd }} - sls: {{ sls_server_config_users }} # If the mode is 'none' we respect the package and do nothing - - unless: test "{{ nut.mode }}" = "none" + - unless: test "{{ nutmap.mode }}" = "none" +{%- endfor %} nut-server-service-running-upsd-service-running: service.running: