Import map.jinja+defaults.yaml structure from salt-formula
Now using the `deep_merge()` macro so we can move the values which are identical on most distributions from `map.jinja` to `defaults.yaml`.
This commit is contained in:
parent
7fc82e0bd2
commit
f30c63f9ed
2 changed files with 66 additions and 18 deletions
10
postfix/defaults.yaml
Normal file
10
postfix/defaults.yaml
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# vim: ft=yaml
|
||||||
|
|
||||||
|
postfix:
|
||||||
|
aliases_file: /etc/aliases
|
||||||
|
config_path: /etc/postfix
|
||||||
|
package: postfix
|
||||||
|
postsrsd_pkg: postsrsd
|
||||||
|
postgrey_pkg: postgrey
|
||||||
|
service: postfix
|
|
@ -1,36 +1,74 @@
|
||||||
{% set postfix = salt['grains.filter_by']({
|
# -*- 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']({
|
||||||
'Debian': {
|
'Debian': {
|
||||||
'package': 'postfix',
|
|
||||||
'policyd_spf_pkg': 'postfix-policyd-spf-python',
|
'policyd_spf_pkg': 'postfix-policyd-spf-python',
|
||||||
'postsrsd_pkg': 'postsrsd',
|
|
||||||
'postgrey_pkg': 'postgrey',
|
|
||||||
'pcre_pkg': 'postfix-pcre',
|
'pcre_pkg': 'postfix-pcre',
|
||||||
'mysql_pkg': 'postfix-mysql',
|
'mysql_pkg': 'postfix-mysql',
|
||||||
'service': 'postfix',
|
|
||||||
'aliases_file': '/etc/aliases',
|
|
||||||
},
|
},
|
||||||
'Gentoo': {
|
'Gentoo': {
|
||||||
'package': 'mail-mta/postfix',
|
'package': 'mail-mta/postfix',
|
||||||
'policyd_spf_pkg': 'mail-filter/pypolicyd-spf',
|
'policyd_spf_pkg': 'mail-filter/pypolicyd-spf',
|
||||||
'postsrsd_pkg': 'mail-filter/postsrsd',
|
|
||||||
'postgrey_pkg': 'mail-filter/postgrey',
|
'postgrey_pkg': 'mail-filter/postgrey',
|
||||||
'service': 'postfix',
|
'postsrsd_pkg': 'mail-filter/postsrsd',
|
||||||
'aliases_file': '/etc/mail/aliases',
|
'aliases_file': '/etc/mail/aliases',
|
||||||
},
|
},
|
||||||
'RedHat': {
|
'RedHat': {
|
||||||
'package': 'postfix',
|
|
||||||
'policyd_spf_pkg': 'pypolicyd-spf',
|
'policyd_spf_pkg': 'pypolicyd-spf',
|
||||||
'postsrsd_pkg': 'postsrsd',
|
|
||||||
'postgrey_pkg': 'postgrey',
|
|
||||||
'service': 'postfix',
|
|
||||||
'aliases_file': '/etc/aliases',
|
|
||||||
},
|
},
|
||||||
'Arch' : {
|
'Arch' : {
|
||||||
'package': 'postfix',
|
|
||||||
'policyd_spf_pkg': 'python-postfix-policyd-spf',
|
'policyd_spf_pkg': 'python-postfix-policyd-spf',
|
||||||
'postsrsd_pkg': 'postsrsd',
|
|
||||||
'postgrey_pkg': 'postgrey',
|
|
||||||
'service': 'postfix',
|
|
||||||
'aliases_file': '/etc/aliases',
|
|
||||||
},
|
},
|
||||||
}, merge=salt['pillar.get']('postfix:lookup')) %}
|
}, merge=salt['pillar.get']('postfix:lookup')) %}
|
||||||
|
|
||||||
|
{## 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)
|
||||||
|
%}
|
||||||
|
|
Loading…
Reference in a new issue