feat(zones): allow custom options and files

- allow additional configuration options in zone blocks
- allow installation of zone files from other Salt file roots

Signed-off-by: Georg Pfuetzenreuter <mail@georg-pfuetzenreuter.net>
This commit is contained in:
Georg Pfuetzenreuter 2023-02-17 21:21:15 +01:00
parent de523dd8df
commit 307ed12b2b
Signed by: Georg
GPG Key ID: 1ED2F138E7E6FF57
3 changed files with 15 additions and 0 deletions

View File

@ -28,10 +28,14 @@ nsd-config-zones-file-directory:
"{{ identifier }}":
file.managed:
- name: "{{ nsd.zones_dir }}/{{ zonefile_name(name, config) }}"
{%- if 'zone_source' in config %}
- source: {{ config['zone_source'] }}
{%- else %}
- source: {{ files_switch([template, template+'.jinja'],
lookup=identifier
)
}}
{%- endif %}
- mode: 644
- user: root
- group: {{ nsd.rootgroup }}

View File

@ -1,4 +1,5 @@
{%- from "nsd/macros.jinja" import zonefile_name with context -%}
{%- set extraopts = ['allow-notify', 'request-xfr', 'outgoing-interface'] -%}
########################################################################
# File managed by Salt at <{{ source }}>.
# Your changes will be overwritten.
@ -8,4 +9,9 @@
zone:
name: "{{ name }}"
zonefile: "{{ nsd.zones_dir }}/{{ zonefile_name(name, config) }}"
{%- for option in extraopts %}
{%- if option in config %}
{{ option }}: {{ config[option] }}
{%- endif %}
{%- endfor %}
{%- endfor %}

View File

@ -31,6 +31,11 @@ nsd:
"168.192.in-addr.arpa": {}
# NSD's include-pattern directive may be a better way to share configuration
# across zones than using YAML anchors.
#
# You can load the zone file from a custom source and specify additional configuration options:
# example.com:
# zone_source: salt://zones/example.com.zone
# request-xfr: 192.168.0.1
# If this section is present in your Pillar data,
# nsd.conf.d/10-salt.conf will be created and managed