Sort hashes

To process hash entries in deterministic order.

Without this patch, config entries were different for every run
and required a service restart when nothing actually changed.

Doing it similar to
0fe2f7e66b
This commit is contained in:
Bernhard M. Wiedemann 2018-08-31 13:46:54 +02:00
parent 993b7d339d
commit 353a8dfc15
9 changed files with 16 additions and 16 deletions

View file

@ -202,9 +202,9 @@ bind_rndc_client_config:
{%- set views = {False: salt['pillar.get']('bind', {})} %}{# process non-view zones in the same loop #}
{%- do views.update(salt['pillar.get']('bind:configured_views', {})) %}
{%- for view, view_data in views.items() %}
{%- for view, view_data in views|dictsort %}
{%- set dash_view = '-' + view if view else '' %}
{% for zone, zone_data in view_data.get('configured_zones', {}).items() -%}
{% for zone, zone_data in view_data.get('configured_zones', {})|dictsort -%}
{%- set file = salt['pillar.get']("bind:available_zones:" + zone + ":file", false) %}
{%- set zone_records = salt['pillar.get']('bind:available_zones:' + zone + ':records', {}) %}
{%- if salt['pillar.get']('bind:available_zones:' + zone + ':generate_reverse') %}

View file

@ -11,7 +11,7 @@ options {
// listen-on { none; };
{#- Allow inclusion of arbitrary statements #}
{%- for statement, value in salt['pillar.get']('bind:config:options', {}).items() -%}
{%- for statement, value in salt['pillar.get']('bind:config:options', {})|dictsort -%}
{%- if value is iterable and value is not string %}
{{ statement }} {
{%- for item in value %}

View file

@ -3,7 +3,7 @@
// Do any local configuration here
//
{% for key,args in salt['pillar.get']('bind:keys', {}).items() -%}
{% for key,args in salt['pillar.get']('bind:keys', {})|dictsort -%}
key "{{ key }}" {
algorithm {{ args['algorithm'] | default('HMAC-MD5.SIG-ALG.REG.INT') }};
secret "{{ args['secret'] }}";

View file

@ -27,7 +27,7 @@ options {
{%- endif -%}
{#- Allow inclusion of arbitrary statements #}
{%- for statement, value in salt['pillar.get']('bind:config:options', {}).items() -%}
{%- for statement, value in salt['pillar.get']('bind:config:options', {})|dictsort -%}
{%- if value is iterable and value is not string %}
{{ statement }} {
{%- for item in value %}

View file

@ -5,13 +5,13 @@ options {
};
{% for key,args in salt['pillar.get']('bind:rndc_client:server', {}).items() -%}
{% for key,args in salt['pillar.get']('bind:rndc_client:server', {})|dictsort -%}
server "{{ key }}" {
key {{ args['key'] }};
};
{% endfor %}
{% for key,args in salt['pillar.get']('bind:keys', {}).items() -%}
{% for key,args in salt['pillar.get']('bind:keys', {})|dictsort -%}
key "{{ key }}" {
algorithm {{ args['algorithm'] | default('HMAC-MD5.SIG-ALG.REG.INT') }};
secret "{{ args['secret'] }}";

View file

@ -71,7 +71,7 @@ options {
{%- endif -%}
{#- Allow inclusion of arbitrary statements #}
{%- for statement, value in salt['pillar.get']('bind:config:options', {}).items() -%}
{%- for statement, value in salt['pillar.get']('bind:config:options', {})|dictsort -%}
{%- if value is iterable and value is not string %}
{{ statement }} {
{%- for item in value %}
@ -379,7 +379,7 @@ zone "1.168.192.in-addr.arpa" {
include "{{ map.local_config }}";
{%- if 'keys' in salt['pillar.get']('bind') %}
{% for key,args in salt['pillar.get']('bind:keys', {}).items() -%}
{% for key,args in salt['pillar.get']('bind:keys', {})|dictsort -%}
key "{{ key }}" {
algorithm {{ args['algorithm'] | default('HMAC-MD5.SIG-ALG.REG.INT') }};
secret "{{ args['secret'] }}";

View file

@ -77,7 +77,7 @@ zone "{{ key }}" {
include "{{ map.default_zones_config }}";
{%- endif %}
{% for key, args in salt['pillar.get']('bind:configured_zones', {}).items() -%}
{% for key, args in salt['pillar.get']('bind:configured_zones', {})|dictsort -%}
{%- if salt['pillar.get']("bind:configured_zones:" + key + ":file") -%}
{%- set file = salt['pillar.get']("bind:configured_zones:" + key + ":file") %}
{% else %}
@ -92,7 +92,7 @@ include "{{ map.default_zones_config }}";
{{ zone(key, args, file, masters) }}
{% endfor %}
{% for view, view_data in salt['pillar.get']('bind:configured_views', {}).items() %}
{% for view, view_data in salt['pillar.get']('bind:configured_views', {})|dictsort %}
view {{ view }} {
{%- if view == 'default' %}
@ -105,7 +105,7 @@ match-clients {
{%- endfor %}
};
{% for key, args in view_data.get('configured_zones', {}).items() -%}
{% for key, args in view_data.get('configured_zones', {})|dictsort -%}
{%- set file = salt['pillar.get']("bind:available_zones:" + key + ":file") %}
{%- set masters = salt['pillar.get']("bind:available_zones:" + key + ":masters") %}
{{ zone(key, args, file, masters) }}
@ -165,7 +165,7 @@ statistics-channels {
{%- endif %}
{%- for name, data in salt['pillar.get']('bind:configured_acls', {}).items() %}
{%- for name, data in salt['pillar.get']('bind:configured_acls', {})|dictsort %}
acl {{ name }} {
{%- for d in data %}
{{ d }};
@ -173,7 +173,7 @@ acl {{ name }} {
};
{%- endfor %}
{%- for name, data in salt['pillar.get']('bind:configured_masters', {}).items() %}
{%- for name, data in salt['pillar.get']('bind:configured_masters', {})|dictsort %}
masters {{ name }} {
{%- for d in data %}
{{ d }};

View file

@ -14,7 +14,7 @@ options {
memstatistics-file "{{ map.get('named_directory') }}/data/named_mem_stats.txt";
{#- Allow inclusion of arbitrary statements #}
{%- for statement, value in salt['pillar.get']('bind:config:options', map.get('options', {})).items() -%}
{%- for statement, value in salt['pillar.get']('bind:config:options', map.get('options', {}))|dictsort -%}
{%- if value is iterable and value is not string %}
{{ statement }} {
{%- for item in value %}

View file

@ -99,7 +99,7 @@ options {
{% endif %}
{#- Allow inclusion of arbitrary statements #}
{%- for statement, value in salt['pillar.get']('bind:config:options', map.get('options', {})).items() -%}
{%- for statement, value in salt['pillar.get']('bind:config:options', map.get('options', {}))|dictsort -%}
{%- if value is iterable and value is not string %}
{{ statement }} {
{%- for item in value %}