feat(config): pillar based config template

Allow management of general configuration using pillar data.

Signed-off-by: Georg Pfuetzenreuter <mail@georg-pfuetzenreuter.net>
This commit is contained in:
Georg Pfuetzenreuter 2023-02-17 00:07:24 +01:00
parent 4b5887a1f0
commit 4267fd2482
Signed by: Georg
GPG Key ID: 1ED2F138E7E6FF57
7 changed files with 68 additions and 11 deletions

View File

@ -4,6 +4,7 @@
{#- Get the `tplroot` from `tpldir` #} {#- Get the `tplroot` from `tpldir` #}
{%- set tplroot = tpldir.split('/')[0] %} {%- set tplroot = tpldir.split('/')[0] %}
{%- set sls_package_install = tplroot ~ '.package.install' %} {%- set sls_package_install = tplroot ~ '.package.install' %}
{%- from tplroot ~ "/macros.jinja" import config_file with context %}
{%- from tplroot ~ "/map.jinja" import mapdata as nsd with context %} {%- from tplroot ~ "/map.jinja" import mapdata as nsd with context %}
{%- from tplroot ~ "/libtofs.jinja" import files_switch with context %} {%- from tplroot ~ "/libtofs.jinja" import files_switch with context %}
@ -28,3 +29,12 @@ nsd-config-file-file-managed:
- context: - context:
nsd: {{ nsd | json }} nsd: {{ nsd | json }}
- check_cmd: nsd-checkconf - check_cmd: nsd-checkconf
{%- set config_data = nsd.get('config_data', {}) %}
{%- if config_data | length > 0 %}
{{ config_file('10-salt', 'pillar-configuration') }}
{%- endif %}

View File

@ -0,0 +1,6 @@
{%- for category, config in nsd.get('config_data').items() %}
{{ category }}:
{%- for option, value in config.items() %}
{{ option }}: {{ value }}
{%- endfor %}
{%- endfor %}

View File

@ -17,9 +17,10 @@ nsd:
# config_include_glob: *.conf # config_include_glob: *.conf
# Configuration is separated into several files which have their own templates # Configuration is separated into several files which have their own templates
config_files: # config_files:
10-server: local-nsd-for-unbound # 10-server: local-nsd-for-unbound
# 90-generated-zones is reserved for zones generated by this formula # # 90-generated-zones is reserved for zones generated by this formula
# # 10-salt is reserved for general configuration generated by this formula
# If this section is present in your Pillar data, # If this section is present in your Pillar data,
# nsd.conf.d/90-generated-zones will be created and managed. # nsd.conf.d/90-generated-zones will be created and managed.
@ -31,6 +32,18 @@ nsd:
# NSD's include-pattern directive may be a better way to share configuration # NSD's include-pattern directive may be a better way to share configuration
# across zones than using YAML anchors. # across zones than using YAML anchors.
# If this section is present in your Pillar data,
# nsd.conf.d/10-salt.conf will be created and managed
config_data:
server:
hide-version: 'yes'
ip-address: 127.0.0.1
verbosity: 2
port: 53530
remote-control:
control-enable: 'yes'
control-interface: /run/nsd.sock
tofs: tofs:
# The files_switch key serves as a selector for alternative # The files_switch key serves as a selector for alternative
# directories under the formula files directory. See TOFS pattern # directories under the formula files directory. See TOFS pattern

View File

@ -7,8 +7,15 @@ values:
added_in_pillar: pillar_value added_in_pillar: pillar_value
arch: amd64 arch: amd64
config: /etc/nsd/nsd.conf config: /etc/nsd/nsd.conf
config_files: config_data:
10-server: local-nsd-for-unbound remote-control:
control-enable: 'yes'
control-interface: /run/nsd.sock
server:
hide-version: 'yes'
ip-address: 127.0.0.1
port: 53530
verbosity: 2
config_include_dir: "/etc/nsd/nsd.conf.d" config_include_dir: "/etc/nsd/nsd.conf.d"
config_include_glob: "*.conf" config_include_glob: "*.conf"
lookup: lookup:

View File

@ -7,8 +7,15 @@ values:
added_in_pillar: pillar_value added_in_pillar: pillar_value
arch: amd64 arch: amd64
config: /etc/nsd/nsd.conf config: /etc/nsd/nsd.conf
config_files: config_data:
10-server: local-nsd-for-unbound remote-control:
control-enable: 'yes'
control-interface: /run/nsd.sock
server:
hide-version: 'yes'
ip-address: 127.0.0.1
port: 53530
verbosity: 2
config_include_dir: "/etc/nsd/nsd.conf.d" config_include_dir: "/etc/nsd/nsd.conf.d"
config_include_glob: "*.conf" config_include_glob: "*.conf"
lookup: lookup:

View File

@ -7,8 +7,15 @@ values:
added_in_pillar: pillar_value added_in_pillar: pillar_value
arch: amd64 arch: amd64
config: /etc/nsd/nsd.conf config: /etc/nsd/nsd.conf
config_files: config_data:
10-server: local-nsd-for-unbound remote-control:
control-enable: 'yes'
control-interface: /run/nsd.sock
server:
hide-version: 'yes'
ip-address: 127.0.0.1
port: 53530
verbosity: 2
config_include_dir: "/etc/nsd/nsd.conf.d" config_include_dir: "/etc/nsd/nsd.conf.d"
config_include_glob: "*.conf" config_include_glob: "*.conf"
lookup: lookup:

View File

@ -7,8 +7,15 @@ values:
added_in_pillar: pillar_value added_in_pillar: pillar_value
arch: amd64 arch: amd64
config: /etc/nsd/nsd.conf config: /etc/nsd/nsd.conf
config_files: config_data:
10-server: local-nsd-for-unbound remote-control:
control-enable: 'yes'
control-interface: /run/nsd.sock
server:
hide-version: 'yes'
ip-address: 127.0.0.1
port: 53530
verbosity: 2
config_include_dir: "/etc/nsd/nsd.conf.d" config_include_dir: "/etc/nsd/nsd.conf.d"
config_include_glob: "*.conf" config_include_glob: "*.conf"
lookup: lookup: