diff --git a/keepalived/map.jinja b/keepalived/map.jinja index 252e0ef..f6d18a0 100644 --- a/keepalived/map.jinja +++ b/keepalived/map.jinja @@ -4,21 +4,46 @@ {#- Get the `tplroot` from `tpldir` #} {%- set tplroot = tpldir.split('/')[0] %} {#- Start imports as #} -{%- import_yaml tplroot ~ "/defaults.yaml" or {} as default_settings %} -{%- import_yaml tplroot ~ "/osfamilymap.yaml" or {} as osfamilymap %} -{%- import_yaml tplroot ~ "/osmap.yaml" or {} as osmap %} -{%- import_yaml tplroot ~ "/osfingermap.yaml" or {} as osfingermap %} +{%- import_yaml tplroot ~ "/defaults.yaml" as default_settings %} +{%- import_yaml tplroot ~ "/osarchmap.yaml" as osarchmap %} +{%- import_yaml tplroot ~ "/osfamilymap.yaml" as osfamilymap %} +{%- import_yaml tplroot ~ "/osmap.yaml" as osmap %} +{%- import_yaml tplroot ~ "/osfingermap.yaml" as osfingermap %} -{%- set defaults = salt['grains.filter_by'](default_settings, - default='keepalived', - merge=salt['grains.filter_by'](osfamilymap, grain='os_family', - merge=salt['grains.filter_by'](osmap, grain='os', - merge=salt['grains.filter_by'](osfingermap, grain='osfinger', - merge=salt['pillar.get']('keepalived:lookup', default={}) +{#- Retrieve the config dict only once #} +{%- set _config = salt['config.get'](tplroot, default={}) %} + +{%- set defaults = salt['grains.filter_by']( + default_settings, + default=tplroot, + merge=salt['grains.filter_by']( + osarchmap, + grain='osarch', + merge=salt['grains.filter_by']( + osfamilymap, + grain='os_family', + merge=salt['grains.filter_by']( + osmap, + grain='os', + merge=salt['grains.filter_by']( + osfingermap, + grain='osfinger', + merge=salt['grains.filter_by']( + _config, + default='lookup' + ) + ) + ) + ) ) ) - ) -) %} +%} -{#- Merge the keepalived pillar #} -{%- set keepalived = salt['pillar.get']('keepalived', default=defaults, merge=True) %} +{%- set config = salt['grains.filter_by']( + {'defaults': defaults}, + default='defaults', + merge=_config + ) +%} + +{%- set keepalived = config %} diff --git a/keepalived/osarchmap.yaml b/keepalived/osarchmap.yaml new file mode 100644 index 0000000..ab3bc1f --- /dev/null +++ b/keepalived/osarchmap.yaml @@ -0,0 +1,35 @@ +# -*- coding: utf-8 -*- +# vim: ft=yaml +# +# Setup variables using grains['osarch'] based logic. +# You just need to add the key:values for an `osarch` that differ +# from `defaults.yaml`. +# Only add an `osarch` which is/will be supported by the formula. +# +# If you do not need to provide defaults via the `osarch` grain, +# you will need to provide at least an empty dict in this file, e.g. +# osarch: {} +--- +amd64: + arch: amd64 + +x86_64: + arch: amd64 + +386: + arch: 386 + +arm64: + arch: arm64 + +armv6l: + arch: armv6l + +armv7l: + arch: armv7l + +ppc64le: + arch: ppc64le + +s390x: + arch: s390x diff --git a/keepalived/osfamilymap.yaml b/keepalived/osfamilymap.yaml index 306d395..2315c16 100644 --- a/keepalived/osfamilymap.yaml +++ b/keepalived/osfamilymap.yaml @@ -1,6 +1,13 @@ # -*- coding: utf-8 -*- # vim: ft=yaml +# +# Setup variables using grains['os_family'] based logic. +# You just need to add the key:values for an `os_family` that differ +# from `defaults.yaml` + `osarch.yaml`. +# Only add an `os_family` which is/will be supported by the formula. +# +# If you do not need to provide defaults via the `os_family` grain, +# you will need to provide at least an empty dict in this file, e.g. +# osfamilymap: {} --- -Debian: {} -RedHat: {} -Suse: {} +osfamilymap: {} diff --git a/keepalived/osfingermap.yaml b/keepalived/osfingermap.yaml index ee18cf2..221bedf 100644 --- a/keepalived/osfingermap.yaml +++ b/keepalived/osfingermap.yaml @@ -1,11 +1,13 @@ # -*- coding: utf-8 -*- # vim: ft=yaml +# +# Setup variables using grains['osfinger'] based logic. +# You just need to add the key:values for an `osfinger` that differ +# from `defaults.yaml` + `osarch.yaml` + `os_family.yaml` + `osmap.yaml`. +# Only add an `osfinger` which is/will be supported by the formula. +# +# If you do not need to provide defaults via the `os_finger` grain, +# you will need to provide at least an empty dict in this file, e.g. +# osfingermap: {} --- -Debian-8: {} -Debian-9: {} -Ubuntu-16.04: {} -Ubuntu-18.04: {} -Fedora-28: {} -Fedora-29: {} -CentOS-7: {} -openSUSE-4.23: {} +osfingermap: {} diff --git a/keepalived/osmap.yaml b/keepalived/osmap.yaml index c1cad1a..2ec94b4 100644 --- a/keepalived/osmap.yaml +++ b/keepalived/osmap.yaml @@ -1,8 +1,13 @@ # -*- coding: utf-8 -*- # vim: ft=yaml +# +# Setup variables using grains['os'] based logic. +# You just need to add the key:values for an `os` that differ +# from `defaults.yaml` + `osarch.yaml` + `os_family.yaml`. +# Only add an `os` which is/will be supported by the formula. +# +# If you do not need to provide defaults via the `os` grain, +# you will need to provide at least an empty dict in this file, e.g. +# osmap: {} --- -Debian: {} -Ubuntu: {} -Fedora: {} -CentOS: {} -openSUSE: {} +osmap: {}