Skip to content

Commit

Permalink
Merge pull request #12 from n-rodriguez/wip/feats
Browse files Browse the repository at this point in the history
feat(states): add exim.mailname and exim.aliases states
  • Loading branch information
vutny authored Oct 4, 2019
2 parents 63a132e + a6418d3 commit ca897ef
Show file tree
Hide file tree
Showing 10 changed files with 142 additions and 19 deletions.
8 changes: 8 additions & 0 deletions docs/README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,14 @@ Installs the exim package.
^^^^^^^^^^^^^^^
This state manages the file ``update-exim4.conf.conf`` under ``/etc/exim4`` (template found in "exim/files"). The configuration is populated by values in "exim/map.jinja" based on the package's default values (and RedHat, Debian, Suse and Arch family distribution specific values), which can then be overridden by values of the same name in pillar.

``exim.mailname``
^^^^^^^^^^^^^^^^^
This state manages the ``/etc/mailname`` value used by Debian hosts.

``exim.aliases``
^^^^^^^^^^^^^^^^
This state manages the hosts mail aliases.

``exim.service``
^^^^^^^^^^^^^^^^
Manages the startup and running state of the exim service.
Expand Down
61 changes: 61 additions & 0 deletions exim/config/aliases.sls
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
# -*- coding: utf-8 -*-
# vim: ft=sls

{#- Get the `tplroot` from `tpldir` #}
{%- set tplroot = tpldir.split('/')[0] %}
{%- set sls_package_install = tplroot ~ '.package.install' %}
{%- from tplroot ~ "/map.jinja" import exim with context %}
{%- set aliases = exim.aliases | default({}) %}
{%- set virtual_aliases = exim.virtual_aliases | default({}) %}
include:
- {{ sls_package_install }}
{%- for name, targets in aliases | dictsort %}
exim/alias/{{ name }}:
{%- if not targets %}
alias.absent:
- name: {{ name }}
{%- else %}
alias.present:
- name: {{ name }}
- target:
{%- if targets is list %}
{%- for target in targets %}
- {{ target }}
{%- endfor %}
{%- else %}
{{ targets }}
{%- endif %}
- require:
- sls: {{ sls_package_install }}
- listen_in:
- cmd: exim/newaliases
{%- endif %}
{%- endfor %}
{%- if virtual_aliases %}
exim/virtual-aliases/dir:
file.directory:
- name: {{ exim.virtual_aliases_dir }}
{%- endif %}
{%- for domain, aliases in virtual_aliases | dictsort %}
exim/virtual-aliases/{{ domain }}:
file.managed:
- name: {{ exim.virtual_aliases_dir }}/{{ domain }}
- source: salt://exim/files/virtual_aliases.jinja
- template: jinja
- context:
aliases: {{ aliases|json }}
domain: {{ domain }}
- require:
- sls: {{ sls_package_install }}
- listen_in:
- cmd: exim/newaliases
{%- endfor %}
exim/newaliases:
cmd.wait:
- name: newaliases
46 changes: 27 additions & 19 deletions exim/config/file.sls
Original file line number Diff line number Diff line change
Expand Up @@ -6,19 +6,23 @@
{%- set sls_package_install = tplroot ~ '.package.install' %}
{%- from tplroot ~ "/map.jinja" import exim with context %}
{% set use_split_config = salt['pillar.get']('exim:config:use_split_config', 'true') %}
{% set configtype = salt['pillar.get']('exim:config:configtype', 'satellite') %}
{% set hide_mailname = salt['pillar.get']('exim:config:hide_mailname', 'true') %}
{% set ue4c_keepcomments = salt['pillar.get']('exim:config:ue4c_keepcomments', 'true') %}
{% set localdelivery = salt['pillar.get']('exim:config:localdelivery', 'mail_spool') %}
{% set local_interfaces = salt['pillar.get']('exim:config:local_interfaces', '') %}
{% set minimaldns = salt['pillar.get']('exim:config:minimaldns', 'false') %}
{% set other_hostnames = salt['pillar.get']('exim:config:other_hostnames', '') %}
{% set readhost = salt['pillar.get']('exim:config:readhost', '') %}
{% set relay_domains = salt['pillar.get']('exim:config:relay_domains', '') %}
{% set relay_nets = salt['pillar.get']('exim:config:relay_nets', '') %}
{% set smarthost = salt['pillar.get']('exim:config:smarthost', '') %}
{% set cfilemode = salt['pillar.get']('exim:config:cfilemode', '644') %}
{%- set exim_config = exim.config | default({}) %}
{%- set use_split_config = exim_config.use_split_config | default('true') %}
{%- set configtype = exim_config.configtype | default('satellite') %}
{%- set hide_mailname = exim_config.hide_mailname | default('true') %}
{%- set ue4c_keepcomments = exim_config.ue4c_keepcomments | default('true') %}
{%- set localdelivery = exim_config.localdelivery | default('mail_spool') %}
{%- set local_interfaces = exim_config.local_interfaces | default('') %}
{%- set minimaldns = exim_config.minimaldns | default('false') %}
{%- set other_hostnames = exim_config.other_hostnames | default('') %}
{%- set readhost = exim_config.readhost | default('') %}
{%- set relay_domains = exim_config.relay_domains | default('') %}
{%- set relay_nets = exim_config.relay_nets | default('') %}
{%- set smarthost = exim_config.smarthost | default('') %}
{%- set cfilemode = exim_config.cfilemode | default('644') %}
include:
- {{ sls_package_install }}
{{ exim.config_dir }}/{{ exim.config_file }}:
file.managed:
Expand All @@ -36,13 +40,17 @@
dc_readhost='{{ readhost }}'
dc_smarthost='{{ smarthost }}'
CFILEMODE='{{ cfilemode }}'
- require:
- sls: {{ sls_package_install }}
{% if salt['pillar.get']('exim:files') %}
{% for dir in exim.sub_dirs %}
{% for file in salt['pillar.get']('exim:files:' + dir, {}) %}
{%- 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 }}:
file.managed:
- contents_pillar: exim:files:{{ dir }}:{{ file }}
{% endfor %}
{% endfor %}
{% endif %}
- require:
- sls: {{ sls_package_install }}
{%- endfor %}
{%- endfor %}
{%- endif %}
2 changes: 2 additions & 0 deletions exim/config/init.sls
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,5 @@

include:
- .file
- .mailname
- .aliases
19 changes: 19 additions & 0 deletions exim/config/mailname.sls
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# -*- coding: utf-8 -*-
# vim: ft=sls

{#- Get the `tplroot` from `tpldir` #}
{%- set tplroot = tpldir.split('/')[0] %}
{%- set sls_package_install = tplroot ~ '.package.install' %}
{%- from tplroot ~ "/map.jinja" import exim with context %}
{%- set mailname = exim.mailname | default(salt['grains.get']('fqdn')) %}
include:
- {{ sls_package_install }}
exim/config/mailname:
file.managed:
- name: {{ exim.mailname_file }}
- contents: {{ mailname }}
- require:
- sls: {{ sls_package_install }}
2 changes: 2 additions & 0 deletions exim/osfamilymap.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@ Debian:
service: exim4
config_dir: /etc/exim4
config_file: update-exim4.conf.conf
mailname_file: /etc/mailname
virtual_aliases_dir: /etc/exim4/virtual
sub_dirs:
- main
- acl
Expand Down
3 changes: 3 additions & 0 deletions pillar.example
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,9 @@ exim:
relay_domains: ''
relay_nets: ''
smarthost: ''
mailname: foo.bar.baz
aliases:
root: root@bar.baz
files:
main:
'01_exim4-config_listmacrosdefs': |
Expand Down
10 changes: 10 additions & 0 deletions test/integration/default/controls/config_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,14 @@
# Custom config
its('content') { should include "dc_hide_mailname='false'" }
end

describe file('/etc/mailname') do
# Custom config
its('content') { should include 'foo.bar.baz' }
end

describe file('/etc/aliases') do
# Custom config
its('content') { should include 'root: root@bar.baz' }
end
end
7 changes: 7 additions & 0 deletions test/integration/default/controls/service_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,11 @@
it { should be_running }
end

describe port(25) do
it { should be_listening }
its('processes') { should include 'exim4' }
its('protocols') { should include 'tcp' }
its('addresses') { should include '0.0.0.0' }
its('addresses') { should include '::' }
end
end
3 changes: 3 additions & 0 deletions test/salt/pillar/exim.sls
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,6 @@ exim:
config:
configtype: 'satellite'
hide_mailname: 'false'
mailname: foo.bar.baz
aliases:
root: root@bar.baz

0 comments on commit ca897ef

Please sign in to comment.