diff --git a/exim/config/file.sls b/exim/config/file.sls index a37e12a..6d57b46 100644 --- a/exim/config/file.sls +++ b/exim/config/file.sls @@ -26,7 +26,8 @@ exim/config/install: {%- if salt['pillar.get']('exim:files') %} {%- for dir in exim.sub_dirs %} {%- for file in salt['pillar.get']('exim:files:' + dir, {}) %} -{{ exim.config_dir }}/conf.d/{{ dir }}/{{ file }}: + {% set config_subdir_path = '/conf.d/' ~ dir ~ '/' if dir != 'base' else '/' %} +{{ exim.config_dir }}{{ config_subdir_path }}/{{ file }}: file.managed: - contents_pillar: exim:files:{{ dir }}:{{ file }} - require: diff --git a/exim/defaults.yaml b/exim/defaults.yaml index 4d20b9d..53b2b1e 100644 --- a/exim/defaults.yaml +++ b/exim/defaults.yaml @@ -21,6 +21,7 @@ exim: smarthost: [] cfilemode: '644' sub_dirs: + - base - main - acl - router diff --git a/exim/service/running.sls b/exim/service/running.sls index 8b08a3a..aca017e 100644 --- a/exim/service/running.sls +++ b/exim/service/running.sls @@ -13,5 +13,6 @@ exim/service/running: service.running: - name: {{ exim.service }} - enable: true - - require: + - reload: true + - watch: - sls: {{ sls_config_file }} diff --git a/pillar.example b/pillar.example index e5df0b5..982781d 100644 --- a/pillar.example +++ b/pillar.example @@ -20,6 +20,13 @@ exim: aliases: root: root@bar.baz files: + # 'base' dir files will be located under the main CONFDIR (/etc/exim4) + # this allows you to write files like `/etc/exim4/exim4.conf.localmacros` + # or `/etc/exim4/passwd.client` + base: + 'passwd.client': | + # :: + *:mymail@example.com:abdc1243 main: '01_exim4-config_listmacrosdefs': | exim_path = /usr/sbin/exim4 diff --git a/test/integration/default/controls/config_spec.rb b/test/integration/default/controls/config_spec.rb index 37f2f94..90a3c25 100644 --- a/test/integration/default/controls/config_spec.rb +++ b/test/integration/default/controls/config_spec.rb @@ -19,6 +19,11 @@ its('content') { should include 'foo.bar.baz' } end + describe file('/etc/exim4/passwd.client') do + # Custom config + its('content') { should include '*:mymail@example.com:abdc1243' } + end + describe file('/etc/aliases') do # Custom config its('content') { should include 'root: root@bar.baz' } diff --git a/test/salt/pillar/exim.sls b/test/salt/pillar/exim.sls index c42ebb3..e78b55b 100644 --- a/test/salt/pillar/exim.sls +++ b/test/salt/pillar/exim.sls @@ -13,3 +13,8 @@ exim: mailname: foo.bar.baz aliases: root: root@bar.baz + files: + base: + 'passwd.client': | + # :: + *:mymail@example.com:abdc1243