Use defaults.yaml and osmap.yaml
This commit is contained in:
parent
9ed99927c2
commit
ae878da8fa
3 changed files with 42 additions and 84 deletions
|
@ -2,11 +2,11 @@
|
||||||
# vim: ft=yaml
|
# vim: ft=yaml
|
||||||
|
|
||||||
postfix:
|
postfix:
|
||||||
aliases_file: /etc/aliases
|
aliases_file: /etc/aliases
|
||||||
config_path: /etc/postfix
|
config_path: /etc/postfix
|
||||||
package: postfix
|
package: postfix
|
||||||
postsrsd_pkg: postsrsd
|
postsrsd_pkg: postsrsd
|
||||||
postgrey_pkg: postgrey
|
postgrey_pkg: postgrey
|
||||||
root_grp: root
|
root_grp: root
|
||||||
service: postfix
|
service: postfix
|
||||||
xbin_prefix: /usr
|
xbin_prefix: /usr
|
||||||
|
|
|
@ -1,81 +1,15 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
# vim: ft=jinja
|
# vim: ft=jinja
|
||||||
|
|
||||||
{%- macro deep_merge(a, b) %}
|
{% import_yaml "postfix/defaults.yaml" as defaults %}
|
||||||
{#- This whole `'dict' in x.__class__.__name__` mess is a
|
{% import_yaml "postfix/osmap.yaml" as osmap %}
|
||||||
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 %}
|
|
||||||
|
|
||||||
|
{% set postfix = salt['grains.filter_by'](
|
||||||
{## Start with defaults from defaults.yaml ##}
|
defaults,
|
||||||
{% import_yaml "postfix/defaults.yaml" as default_settings %}
|
merge=salt['grains.filter_by'](
|
||||||
|
osmap,
|
||||||
{##
|
grain='os',
|
||||||
Setup variable using grains['os_family'] based logic, only add key:values here
|
merge=salt['pillar.get']('postfix:lookup', {}),
|
||||||
that differ from whats in defaults.yaml
|
),
|
||||||
##}
|
base='postfix')
|
||||||
{% 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': {
|
|
||||||
'policyd_spf_pkg': 'postfix-policyd-spf-python',
|
|
||||||
'pcre_pkg': 'postfix-pcre',
|
|
||||||
'mysql_pkg': 'postfix-mysql',
|
|
||||||
},
|
|
||||||
'Gentoo': {
|
|
||||||
'package': 'mail-mta/postfix',
|
|
||||||
'policyd_spf_pkg': 'mail-filter/pypolicyd-spf',
|
|
||||||
'postgrey_pkg': 'mail-filter/postgrey',
|
|
||||||
'postsrsd_pkg': 'mail-filter/postsrsd',
|
|
||||||
'aliases_file': '/etc/mail/aliases',
|
|
||||||
},
|
|
||||||
'RedHat': {
|
|
||||||
'policyd_spf_pkg': 'pypolicyd-spf',
|
|
||||||
},
|
|
||||||
'Arch' : {
|
|
||||||
'policyd_spf_pkg': 'python-postfix-policyd-spf',
|
|
||||||
},
|
|
||||||
'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',
|
|
||||||
},
|
|
||||||
}, 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)
|
|
||||||
%}
|
%}
|
||||||
|
|
24
postfix/osmap.yaml
Normal file
24
postfix/osmap.yaml
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
Arch:
|
||||||
|
policyd_spf_pkg: python-postfix-policyd-spf
|
||||||
|
|
||||||
|
Debian:
|
||||||
|
policyd_spf_pkg: postfix-policyd-spf-python
|
||||||
|
pcre_pkg: postfix-pcre
|
||||||
|
mysql_pkg: postfix-mysql
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
Gentoo:
|
||||||
|
package: mail-mta/postfix
|
||||||
|
policyd_spf_pkg: mail-filter/pypolicyd-spf
|
||||||
|
postsrsd_pkg: mail-filter/postsrsd
|
||||||
|
postgrey_pkg: mail-filter/postgrey
|
||||||
|
aliases_file: /etc/mail/aliases
|
||||||
|
|
||||||
|
RedHat:
|
||||||
|
policyd_spf_pkg: pypolicyd-spf
|
Loading…
Reference in a new issue