2017-08-24 05:21:48 -04:00
|
|
|
# -*- coding: utf-8 -*-
|
|
|
|
# vim: ft=jinja
|
|
|
|
|
|
|
|
{%- macro deep_merge(a, b) %}
|
|
|
|
{#- This whole `'dict' in x.__class__.__name__` mess is a
|
|
|
|
workaround for the missing mapping test in CentOS 6's
|
|
|
|
ancient Jinja2, see #193 #}
|
|
|
|
{%- for k,v in b.iteritems() %}
|
|
|
|
{%- if v is string or v is number %}
|
|
|
|
{%- do a.update({ k: v }) %}
|
|
|
|
{%- elif 'dict' not in v.__class__.__name__ %}
|
|
|
|
{%- if a[k] is not defined %}
|
|
|
|
{%- do a.update({ k: v }) %}
|
|
|
|
{%- elif a[k] is iterable and 'dict' not in a[k].__class__.__name__ and
|
|
|
|
a[k] is not string %}
|
|
|
|
{%- do a.update({ k: v|list + a[k]|list}) %}
|
|
|
|
{%- else %}
|
|
|
|
{%- do a.update({ k: v }) %}
|
|
|
|
{%- endif %}
|
|
|
|
{%- elif 'dict' in v.__class__.__name__ %}
|
|
|
|
{%- if a[k] is not defined %}
|
|
|
|
{%- do a.update({ k: v }) %}
|
|
|
|
{%- elif 'dict' in a[k].__class__.__name__ %}
|
|
|
|
{%- do a.update({ k: v }) %}
|
|
|
|
{%- else %}
|
|
|
|
{%- do deep_merge(a[k], v) %}
|
|
|
|
{%- endif %}
|
|
|
|
{%- else %}
|
|
|
|
{%- do a.update({ k: 'ERROR: case not contempled in merging!' }) %}
|
|
|
|
{%- endif %}
|
|
|
|
{%- endfor %}
|
|
|
|
{%- endmacro %}
|
|
|
|
|
|
|
|
|
|
|
|
{## Start with defaults from defaults.yaml ##}
|
|
|
|
{% import_yaml "postfix/defaults.yaml" as default_settings %}
|
|
|
|
|
|
|
|
{##
|
|
|
|
Setup variable using grains['os_family'] based logic, only add key:values here
|
|
|
|
that differ from whats in defaults.yaml
|
|
|
|
##}
|
|
|
|
{% set osrelease = salt['grains.get']('osrelease') %}
|
|
|
|
{# set salt_release = salt['pillar.get']('salt:release', 'latest') #}
|
|
|
|
{# set postfix = salt['grains.filter_by'](#}
|
|
|
|
{% set os_family_map = salt['grains.filter_by']({
|
2015-02-26 10:19:08 -05:00
|
|
|
'Debian': {
|
2015-08-22 07:59:29 -04:00
|
|
|
'policyd_spf_pkg': 'postfix-policyd-spf-python',
|
2016-05-24 05:49:28 -04:00
|
|
|
'pcre_pkg': 'postfix-pcre',
|
|
|
|
'mysql_pkg': 'postfix-mysql',
|
2015-02-26 10:19:08 -05:00
|
|
|
},
|
|
|
|
'Gentoo': {
|
2015-08-22 06:46:35 -04:00
|
|
|
'package': 'mail-mta/postfix',
|
2015-08-22 07:59:29 -04:00
|
|
|
'policyd_spf_pkg': 'mail-filter/pypolicyd-spf',
|
2015-08-22 06:40:09 -04:00
|
|
|
'postgrey_pkg': 'mail-filter/postgrey',
|
2017-08-24 05:21:48 -04:00
|
|
|
'postsrsd_pkg': 'mail-filter/postsrsd',
|
2015-08-27 10:11:22 -04:00
|
|
|
'aliases_file': '/etc/mail/aliases',
|
2015-02-26 10:19:08 -05:00
|
|
|
},
|
2015-03-13 08:26:27 -04:00
|
|
|
'RedHat': {
|
2015-08-22 07:59:29 -04:00
|
|
|
'policyd_spf_pkg': 'pypolicyd-spf',
|
2015-03-13 08:26:27 -04:00
|
|
|
},
|
2015-05-02 21:01:09 -04:00
|
|
|
'Arch' : {
|
2015-08-22 07:59:29 -04:00
|
|
|
'policyd_spf_pkg': 'python-postfix-policyd-spf',
|
2015-05-02 21:01:09 -04:00
|
|
|
},
|
2017-08-24 05:27:43 -04:00
|
|
|
'FreeBSD' : {
|
|
|
|
'policyd_spf_pkg': 'py27-postfix-policyd-spf-python',
|
|
|
|
'aliases_file': '/etc/mail/aliases',
|
|
|
|
'xbin_prefix': '/usr/local',
|
|
|
|
'config_path': '/usr/local/etc/postfix',
|
|
|
|
'root_grp': 'wheel',
|
|
|
|
},
|
2015-02-26 10:19:08 -05:00
|
|
|
}, merge=salt['pillar.get']('postfix:lookup')) %}
|
2017-08-24 05:21:48 -04:00
|
|
|
|
|
|
|
{## Merge the flavor_map to the default settings ##}
|
|
|
|
{% do deep_merge(default_settings.postfix, os_family_map) %}
|
|
|
|
|
|
|
|
{## Merge in postfix:lookup pillar ##}
|
|
|
|
{% set postfix = salt['pillar.get'](
|
|
|
|
'postfix',
|
|
|
|
default=default_settings.postfix,
|
|
|
|
merge=True)
|
|
|
|
%}
|