Merge pull request #395 from aboe76/simplify-map.jinja
Simplify map.jinja revert deep_merge solution from #193
This commit is contained in:
commit
1d9643b14b
244
salt/map.jinja
244
salt/map.jinja
|
@ -1,240 +1,24 @@
|
|||
# -*- 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.items() %}
|
||||
{%- 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 imports ##}
|
||||
{% import_yaml "salt/defaults.yaml" as defaults %}
|
||||
{% import_yaml "salt/osfamilymap.yaml" as osfamilymap %}
|
||||
{% import_yaml "salt/osmap.yaml" as osmap %}
|
||||
|
||||
{% set lookup = salt['pillar.get']('salt:lookup', default={}, merge=True) %}
|
||||
{% do defaults.salt.update(lookup) %}
|
||||
|
||||
{## Start with defaults from defaults.yaml ##}
|
||||
{% import_yaml "salt/defaults.yaml" as default_settings %}
|
||||
{# merge the osfamilymap #}
|
||||
{% set osfamily = salt['grains.filter_by'](osfamilymap, grain='os_family') or{} %}
|
||||
{% do salt['defaults.merge'](defaults['salt'], osfamily) %}
|
||||
|
||||
{##
|
||||
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') %}
|
||||
|
||||
{# All minor releases appear in an `archive` sub-directory #}
|
||||
{% if salt_release.split('.')|length >= 3 %}
|
||||
{% set salt_release = 'archive/' ~ salt_release %}
|
||||
{% endif %}
|
||||
|
||||
{% set os_family_map = salt['grains.filter_by']({
|
||||
'Debian': {
|
||||
'pkgrepo': 'deb http://repo.saltstack.com/apt/' +
|
||||
salt['grains.get']('os')|lower + '/' + salt['grains.get']('osmajorrelease', osrelease)|string + '/amd64/' + salt_release + ' ' + salt['grains.get']('oscodename') + ' main',
|
||||
'key_url': 'https://repo.saltstack.com/apt/' + salt['grains.get']('os')|lower + '/' + salt['grains.get']('osmajorrelease', osrelease)|string + '/amd64/' + salt_release + '/SALTSTACK-GPG-KEY.pub',
|
||||
'libgit2': 'libgit2-22',
|
||||
'pyinotify': 'python-pyinotify',
|
||||
'gitfs': {
|
||||
'pygit2': {
|
||||
'install_from_source': True,
|
||||
'version': '0.22.1',
|
||||
'git': {
|
||||
'require_state': False,
|
||||
'install_from_package': 'git',
|
||||
},
|
||||
'libgit2': {
|
||||
'install_from_source': False,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
'RedHat': {
|
||||
'pkgrepo': 'https://repo.saltstack.com/yum/redhat/$releasever/$basearch/' + salt_release,
|
||||
'key_url': 'https://repo.saltstack.com/yum/redhat/$releasever/$basearch/' + salt_release + '/SALTSTACK-GPG-KEY.pub',
|
||||
'pygit2': salt['grains.filter_by']({
|
||||
'Fedora': 'python2-pygit2',
|
||||
'default': 'python-pygit2',
|
||||
}, grain='os'),
|
||||
'python_git': 'GitPython',
|
||||
'gitfs': {
|
||||
'gitpython': {
|
||||
'install_from_source': False,
|
||||
},
|
||||
'pygit2': {
|
||||
'install_from_source': False,
|
||||
'git': {
|
||||
'require_state': False,
|
||||
'install_from_package': 'git',
|
||||
},
|
||||
},
|
||||
},
|
||||
'master': {
|
||||
'gitfs_provider': 'pygit2'
|
||||
},
|
||||
},
|
||||
'Suse': {
|
||||
'pygit2': 'python-pygit2',
|
||||
'pyinotify': 'python-pyinotify',
|
||||
'gitfs': {
|
||||
'pygit2': {
|
||||
'install_from_source': False,
|
||||
'git': {
|
||||
'require_state': False,
|
||||
'install_from_package': 'git',
|
||||
},
|
||||
},
|
||||
},
|
||||
'master': {
|
||||
'gitfs_provider': 'pygit2'
|
||||
},
|
||||
},
|
||||
'Gentoo': {
|
||||
'salt_master': 'app-admin/salt',
|
||||
'salt_minion': 'app-admin/salt',
|
||||
'salt_syndic': 'app-admin/salt',
|
||||
'salt_api': 'app-admin/salt',
|
||||
'salt_cloud': 'app-admin/salt',
|
||||
'pyinotify': 'dev-python/pyinotify',
|
||||
},
|
||||
'Arch': {
|
||||
'salt_master': 'salt',
|
||||
'salt_minion': 'salt',
|
||||
'salt_syndic': 'salt',
|
||||
'salt_cloud': 'salt',
|
||||
'salt_api': 'salt',
|
||||
'salt_ssh': 'salt',
|
||||
'python_git': 'python2-gitpython',
|
||||
'pygit2': 'python2-pygit2',
|
||||
'libgit2': 'libgit2',
|
||||
'pyinotify': 'python2-pyinotify',
|
||||
},
|
||||
'Alpine': {
|
||||
'salt_master': 'salt-master',
|
||||
'salt_minion': 'salt-minion',
|
||||
'salt_syndic': 'salt-syndic',
|
||||
'salt_cloud': 'salt-cloud',
|
||||
'salt_api': 'salt-api',
|
||||
'salt_ssh': 'salt-ssh',
|
||||
'pygit2': 'py2-pygit2',
|
||||
'libgit2': 'libgit2',
|
||||
},
|
||||
'FreeBSD': {
|
||||
'salt_master': 'py27-salt',
|
||||
'salt_minion': 'py27-salt',
|
||||
'salt_syndic': 'py27-salt',
|
||||
'salt_cloud': 'py27-salt',
|
||||
'salt_api': 'py27-salt',
|
||||
'salt_ssh': 'py27-salt',
|
||||
'python_git': 'py27-GitPython',
|
||||
'pygit2': 'py27-pygit2',
|
||||
'config_path': '/usr/local/etc/salt',
|
||||
'minion_service': 'salt_minion',
|
||||
'master_service': 'salt_master',
|
||||
'api_service': 'salt_api',
|
||||
'syndic_service': 'salt_syndic',
|
||||
},
|
||||
'OpenBSD': {
|
||||
'salt_master': 'salt',
|
||||
'salt_minion': 'salt',
|
||||
'salt_syndic': 'salt',
|
||||
'salt_cloud': 'salt',
|
||||
'salt_api': 'salt',
|
||||
'salt_ssh': 'salt',
|
||||
'config_path': '/etc/salt',
|
||||
'minion_service': 'salt_minion',
|
||||
'master_service': 'salt_master',
|
||||
'python_git': 'py-GitPython',
|
||||
},
|
||||
'Windows': {
|
||||
'salt_minion': 'salt-minion',
|
||||
'config_path': 'C:\salt\conf',
|
||||
'minion_service': 'salt-minion',
|
||||
},
|
||||
'MacOS': {
|
||||
'salt_minion': 'com.saltstack.salt',
|
||||
'salt_minion_pkg_source': '',
|
||||
'salt_minion_pkg_hash': '',
|
||||
'config_path': '/private/etc/salt',
|
||||
'minion_service': 'com.saltstack.salt.minion',
|
||||
},
|
||||
}, merge=salt['grains.filter_by']({
|
||||
'Ubuntu': {
|
||||
'pkgrepo': 'deb http://repo.saltstack.com/apt/' +
|
||||
salt['grains.get']('os')|lower + '/' + osrelease + '/amd64/' + salt_release + ' ' + salt['grains.get']('oscodename') + ' main',
|
||||
'key_url': 'https://repo.saltstack.com/apt/' + salt['grains.get']('os')|lower + '/' + osrelease + '/amd64/' + salt_release + '/SALTSTACK-GPG-KEY.pub',
|
||||
'pygit2': 'python-pygit2',
|
||||
'gitfs': {
|
||||
'pygit2': {
|
||||
'install_from_source': False,
|
||||
'git': {
|
||||
'require_state': False,
|
||||
'install_from_package': None,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
'Raspbian': {
|
||||
'pkgrepo': 'deb http://repo.saltstack.com/apt/' +
|
||||
salt['grains.get']('os_family')|lower + '/' + salt['grains.get']('osmajorrelease', osrelease)|string + '/armhf/' + salt_release + ' ' + salt['grains.get']('oscodename') + ' main',
|
||||
'key_url': 'https://repo.saltstack.com/apt/' + salt['grains.get']('os_family')|lower + '/' + salt['grains.get']('osmajorrelease', osrelease)|string + '/armhf/' + salt_release + '/SALTSTACK-GPG-KEY.pub',
|
||||
},
|
||||
'SmartOS': {
|
||||
'salt_master': 'salt',
|
||||
'salt_minion': 'salt',
|
||||
'salt_syndic': 'salt',
|
||||
'salt_cloud': 'salt',
|
||||
'salt_api': 'salt',
|
||||
'salt_ssh': 'salt',
|
||||
'minion_service': 'salt:minion',
|
||||
'master_service': 'salt:master',
|
||||
'api_service': 'salt:api',
|
||||
'python_dulwich': 'py27-dulwich',
|
||||
'gitfs': {
|
||||
'dulwich': {
|
||||
'install_from_source': False,
|
||||
}
|
||||
},
|
||||
'config_path': '/opt/local/etc/salt',
|
||||
'master': {
|
||||
'gitfs_provider': 'dulwich'
|
||||
},
|
||||
}
|
||||
}, grain='os', merge=salt['pillar.get']('salt:lookup')))
|
||||
%}
|
||||
|
||||
{## Merge the flavor_map to the default settings ##}
|
||||
{% do deep_merge(default_settings.salt,os_family_map) %}
|
||||
{# merge the osmap #}
|
||||
{% set osmap = salt['grains.filter_by'](osmap, grain='os') or{} %}
|
||||
{% do salt['defaults.merge'](defaults['salt'], osmap) %}
|
||||
|
||||
{## Merge in salt pillar ##}
|
||||
{% set salt_settings = salt['pillar.get'](
|
||||
'salt',
|
||||
default=default_settings.salt,
|
||||
merge=True)
|
||||
%}
|
||||
{% set salt_settings = salt['pillar.get']('salt', default=defaults['salt'], merge=True) %}
|
||||
|
||||
{## Merge in salt_formulas pillar ##}
|
||||
{% set formulas_settings = salt['pillar.get'](
|
||||
'salt_formulas',
|
||||
default=default_settings.salt_formulas,
|
||||
merge=True)
|
||||
%}
|
||||
{% set formulas_settings = salt['pillar.get']('salt_formulas',default=defaults['salt_formulas'], merge=True) %}
|
||||
|
|
|
@ -0,0 +1,123 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# vim: ft=yaml
|
||||
|
||||
{% set osrelease = salt['grains.get']('osrelease') %}
|
||||
{% set salt_release = salt['pillar.get']('salt:release', 'latest') %}
|
||||
{% if salt_release.split('.')|length >= 3 %}
|
||||
{% set salt_release = 'archive/' ~ salt_release %}
|
||||
{% endif %}
|
||||
{% set os_lower = salt['grains.get']('os')|lower %}
|
||||
{% set osmajorrelease = salt['grains.get']('osmajorrelease', osrelease)|string %}
|
||||
{% set oscodename = salt['grains.get']('oscodename') %}
|
||||
|
||||
Debian:
|
||||
pkgrepo: 'deb http://repo.saltstack.com/apt/{{ os_lower }}/{{ osmajorrelease }}/amd64/{{ salt_release }} {{ oscodename }} main'
|
||||
key_url: 'https://repo.saltstack.com/apt/{{ os_lower }}/{{ osmajorrelease }}/amd64/{{ salt_release }}/SALTSTACK-GPG-KEY.pub'
|
||||
libgit2: libgit2-22
|
||||
pyinotify: python-pyinotify
|
||||
gitfs:
|
||||
pygit2:
|
||||
install_from_source: True
|
||||
version: 0.22.1
|
||||
git:
|
||||
require_state: False
|
||||
install_from_package: git
|
||||
libgit2:
|
||||
install_from_source: False
|
||||
|
||||
RedHat:
|
||||
pkgrepo: 'https://repo.saltstack.com/yum/redhat/$releasever/$basearch/{{ salt_release }}'
|
||||
key_url: 'https://repo.saltstack.com/yum/redhat/$releasever/$basearch/{{ salt_release }}/SALTSTACK-GPG-KEY.pub'
|
||||
pygit2: python-pygit2
|
||||
python_git: GitPython
|
||||
gitfs:
|
||||
gitpython:
|
||||
install_from_source: False
|
||||
pygit2:
|
||||
install_from_source: False
|
||||
git:
|
||||
require_state: False
|
||||
install_from_package: git
|
||||
master:
|
||||
gitfs_provider: pygit2
|
||||
|
||||
Suse:
|
||||
pygit2: python-pygit2
|
||||
pyinotify: python-pyinotify
|
||||
gitfs:
|
||||
pygit2:
|
||||
install_from_source: False
|
||||
git:
|
||||
require_state: False
|
||||
install_from_package: git
|
||||
master:
|
||||
gitfs_provider: pygit2
|
||||
|
||||
Gentoo:
|
||||
salt_master: app-admin/salt
|
||||
salt_minion: app-admin/salt
|
||||
salt_syndic: app-admin/salt
|
||||
salt_api: app-admin/salt
|
||||
salt_cloud: app-admin/salt
|
||||
pyinotify: dev-python/pyinotify
|
||||
|
||||
Arch:
|
||||
salt_master: salt
|
||||
salt_minion: salt
|
||||
salt_syndic: salt
|
||||
salt_cloud: salt
|
||||
salt_api: salt
|
||||
salt_ssh: salt
|
||||
python_git: python2-gitpython
|
||||
pygit2: python2-pygit2
|
||||
libgit2: libgit2
|
||||
pyinotify: python2-pyinotify
|
||||
|
||||
Alpine:
|
||||
salt-master: salt-master
|
||||
salt_minion: salt-minion
|
||||
salt_syndic: salt-syndic
|
||||
salt_cloud: salt-cloud
|
||||
salt_api: salt-api
|
||||
salt_ssh: salt-ssh
|
||||
pygit2: py2-pygit2
|
||||
libgit2: libgit2
|
||||
|
||||
FreeBSD:
|
||||
salt_master: py27-salt
|
||||
salt_minion: py27-salt
|
||||
salt_syndic: py27-salt
|
||||
salt_cloud: py27-salt
|
||||
salt_api: py27-salt
|
||||
salt_ssh: py27-salt
|
||||
python_git: py27-GitPython
|
||||
pygit2: py27-pygit2
|
||||
config_path: /usr/local/etc/salt
|
||||
minion_service: salt_minion
|
||||
master_service: salt_master
|
||||
api_service: salt_api
|
||||
syndic_service: salt_syndic
|
||||
|
||||
OpenBSD:
|
||||
salt_master: salt
|
||||
salt_minion: salt
|
||||
salt_syndic: salt
|
||||
salt_cloud: salt
|
||||
salt_api: salt
|
||||
salt_ssh: salt
|
||||
config_path: /etc/salt
|
||||
minion_service: salt_minion
|
||||
master_service: salt_master
|
||||
python_git: py-GitPython
|
||||
|
||||
Windows:
|
||||
salt_minion: salt-minion
|
||||
config_path: 'C:\salt\conf'
|
||||
minion_service: salt-minion
|
||||
|
||||
MacOS:
|
||||
salt_minion: com.saltstack.salt
|
||||
salt_minion_pkg_source: ''
|
||||
salt_minion_pkg_hash: ''
|
||||
config_path: /private/etc/salt
|
||||
minion_service: com.saltstack.salt.minion
|
|
@ -0,0 +1,50 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# vim: ft=yaml
|
||||
|
||||
{% set osrelease = salt['grains.get']('osrelease') %}
|
||||
{% set salt_release = salt['pillar.get']('salt:release', 'latest') %}
|
||||
{% if salt_release.split('.')|length >= 3 %}
|
||||
{% set salt_release = 'archive/' ~ salt_release %}
|
||||
{% endif %}
|
||||
{% set os_lower = salt['grains.get']('os')|lower %}
|
||||
{% set osmajorrelease = salt['grains.get']('osmajorrelease', osrelease)|string %}
|
||||
{% set oscodename = salt['grains.get']('oscodename') %}
|
||||
|
||||
Fedora:
|
||||
pygit2: python2-pygit2
|
||||
|
||||
Ubuntu:
|
||||
pkgrepo: 'deb http://repo.saltstack.com/apt/{{ os_lower }}/{{ osrelease }}/amd64/{{ salt_release }} {{ oscodename }} main'
|
||||
key_url: 'https://repo.saltstack.com/apt/{{ os_lower }}/{{ osrelease }}/amd64/{{ salt_release }}/SALTSTACK-GPG-KEY.pub'
|
||||
pygit2: python-pygit2
|
||||
gitfs:
|
||||
pygit2:
|
||||
install_from_source: False
|
||||
git:
|
||||
require_state: False
|
||||
install_from_package: Null
|
||||
|
||||
Raspbian:
|
||||
pkgrepo: 'deb http://repo.saltstack.com/apt/{{ os_lower }}/{{ osmajorrelease }}/armhf/{{ salt_release }} {{ oscodename }} main'
|
||||
key_url: 'https://repo.saltstack.com/apt/{{ os_lower }}/{{ osmajorrelease }}/armhf/{{ salt_release }}/SALTSTACK-GPG-KEY.pub'
|
||||
|
||||
SmartOS:
|
||||
salt_master: salt
|
||||
salt_minion: salt
|
||||
salt_syndic: salt
|
||||
salt_cloud: salt
|
||||
salt_api: salt
|
||||
salt_ssh: salt
|
||||
minion_service: 'salt:minion'
|
||||
master_service: 'salt:master'
|
||||
api_service: 'salt:api'
|
||||
python_dulwich: 'py27-dulwich'
|
||||
gitfs:
|
||||
dulwich:
|
||||
install_from_source: False
|
||||
config_path: /opt/local/etc/salt
|
||||
master:
|
||||
gitfs_provider: dulwich
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue