@@ -175,16 +175,19 @@ bind_rndc_client_config:
175175 otherwise, we fallback to the old behaviour and use the declared file
176176# }
177177{%- set zone_source = ' salt://bind/files/zone.jinja' if zone_records != {} else ' salt://' ~ map .zones_source_dir ~ ' /' ~ file % }
178+ {%- set serial_auto = salt[' pillar.get' ](' bind:available_zones:' + zone + ' :soa:serial' , ' ' ) == ' auto' % }
178179{% if file and zone_data[' type' ] == " master" -% }
179- zones- {{ zone }}:
180+ zones- {{ zone }}{{ ' .include ' if serial_auto else ' ' }} :
180181 file .managed:
181- - name: {{ map .named_directory }}/ {{ file }}
182+ - name: {{ map .named_directory }}/ {{ file }}{{ ' .include ' if serial_auto else ' ' }}
182183 - source: {{ zone_source }}
183184 - template: jinja
184185 {% if zone_records != {} % }
185186 - context:
187+ zone: zones- {{ zone }}
186188 soa: {{ salt[' pillar.get' ](" bind:available_zones:" + zone + " :soa" ) }}
187189 records: {{ zone_records }}
190+ include: False
188191 {% endif % }
189192 - user: {{ salt[' pillar.get' ](' bind:config:user' , map .user) }}
190193 - group: {{ salt[' pillar.get' ](' bind:config:group' , map .group) }}
@@ -194,6 +197,31 @@ zones-{{ zone }}:
194197 - require:
195198 - file : named_directory
196199
200+ {% if serial_auto % }
201+ zones- {{ zone }}:
202+ module.wait:
203+ - name: dnsutil.serial
204+ - update: True
205+ - zone: zones- {{ zone }}
206+ - watch:
207+ - file : {{ map .named_directory }}/ {{ file }}.include
208+ file .managed:
209+ - name: {{ map .named_directory }}/ {{ file }}
210+ - require:
211+ - module: zones- {{ zone }}
212+ - source: {{ zone_source }}
213+ - template: jinja
214+ {% if zone_records != {} % }
215+ - context:
216+ zone: zones- {{ zone }}
217+ soa: {{ salt[' pillar.get' ](" bind:available_zones:" + zone + " :soa" ) }}
218+ include: {{ file }}.include
219+ {% endif % }
220+ - user: {{ salt[' pillar.get' ](' bind:config:user' , map .user) }}
221+ - group: {{ salt[' pillar.get' ](' bind:config:group' , map .group) }}
222+ - mode: {{ salt[' pillar.get' ](' bind:config:mode' , ' 644' ) }}
223+ {% endif % }
224+
197225{% if zone_data[' dnssec' ] is defined and zone_data[' dnssec' ] -% }
198226signed- {{ zone }}:
199227 cmd.run:
@@ -214,16 +242,19 @@ signed-{{ zone }}:
214242 otherwise, we fallback to the old behaviour and use the declared file
215243# }
216244{%- set zone_source = ' salt://bind/zone.jinja' if zone_records != {} else ' salt://' ~ map .zones_source_dir ~ ' /' ~ file % }
245+ {%- set serial_auto = salt[' pillar.get' ](' bind:available_zones:' + zone + ' :soa:serial' , ' ' ) == ' auto' % }
217246{% if file and zone_data[' type' ] == ' master' -% }
218- zones- {{ view }}- {{ zone }}:
247+ zones- {{ view }}- {{ zone }}{{ ' .include ' if serial_auto else ' ' }} :
219248 file .managed:
220- - name: {{ map .named_directory }}/ {{ file }}
249+ - name: {{ map .named_directory }}/ {{ file }}{{ ' .include ' if serial_auto else ' ' }}
221250 - source: {{ zone_source }}
222251 - template: jinja
223252 {% if zone_records != {} % }
224253 - context:
254+ zone: zones- {{ view }}- {{ zone }}
225255 soa: {{ salt[' pillar.get' ](" bind:available_zones:" + zone + " :soa" ) }}
226256 records: {{ zone_records }}
257+ include: False
227258 {% endif % }
228259 - user: {{ salt[' pillar.get' ](' bind:config:user' , map .user) }}
229260 - group: {{ salt[' pillar.get' ](' bind:config:group' , map .group) }}
@@ -233,6 +264,30 @@ zones-{{ view }}-{{ zone }}:
233264 - require:
234265 - file : named_directory
235266
267+ {% if serial_auto % }
268+ zones- {{ view }}- {{ zone }}:
269+ module.wait:
270+ - name: dnsutil.serial
271+ - update: True
272+ - zone: zones- {{ view }}- {{ zone }}
273+ - watch:
274+ - file : {{ map .named_directory }}/ {{ file }}.include
275+ file .managed:
276+ - name: {{ map .named_directory }}/ {{ file }}
277+ - require:
278+ - module: zones- {{ view }}- {{ zone }}
279+ - source: {{ zone_source }}
280+ - template: jinja
281+ {% if zone_records != {} % }
282+ - context:
283+ zone: zones- {{ view }}- {{ zone }}
284+ soa: {{ salt[' pillar.get' ](" bind:available_zones:" + zone + " :soa" ) }}
285+ include: {{ file }}.include
286+ {% endif % }
287+ - user: {{ salt[' pillar.get' ](' bind:config:user' , map .user) }}
288+ - group: {{ salt[' pillar.get' ](' bind:config:group' , map .group) }}
289+ - mode: {{ salt[' pillar.get' ](' bind:config:mode' , ' 644' ) }}
290+ {% endif % }
236291{% if zone_data[' dnssec' ] is defined and zone_data[' dnssec' ] -% }
237292signed- {{ view }}- {{ zone }}:
238293 cmd.run:
0 commit comments