diff --git a/bind/files/redhat/named.conf.local b/bind/files/redhat/named.conf.local index f4a7128..3f666fd 100644 --- a/bind/files/redhat/named.conf.local +++ b/bind/files/redhat/named.conf.local @@ -6,9 +6,7 @@ // organization //include "/etc/bind/zones.rfc1918"; -{% for key,args in salt['pillar.get']('bind:configured_zones', {}).items() -%} -{%- set file = salt['pillar.get']("bind:available_zones:" + key + ":file") %} -{%- set masters = salt['pillar.get']("bind:available_zones:" + key + ":masters") %} +{%- macro zone(key, args, file, masters) %} zone "{{ key }}" { type {{ args['type'] }}; {% if args['type'] == 'forward' -%} @@ -21,20 +19,64 @@ zone "{{ key }}" { {%- endfor %} }; {% else -%} - file "data/{{ file }}"; + {% if args['dnssec'] is defined and args['dnssec'] -%} + file "{{ map.named_directory }}/{{ file }}.signed"; + {% else -%} + file "{{ map.named_directory }}/{{ file }}"; + {%- endif %} + {%- if args['allow-update'] is defined %} + allow-update { {{args['allow-update']}}; }; + {%- endif %} + {%- if args.update_policy is defined %} + update-policy { + {%- for policy in args.update_policy %} + {{ policy }}; + {%- endfor %} + }; + {%- endif %} + {%- if args['allow-transfer'] is defined %} + allow-transfer { {{ args.get('allow-transfer', []) | join('; ') }}; }; + {%- endif %} {%- if args['also-notify'] is defined %} also-notify { {{ args.get('also-notify', []) | join('; ') }}; }; {%- endif %} - {% if args['type'] == "master" -%} - {% if args['notify'] -%} + {%- if args['type'] == 'slave' %} + {%- if args['allow-notify'] is defined %} + allow-notify { {{ args.get('allow-notify', []) | join('; ') }}; }; + {%- endif %} + {%- endif %} + {%- if args['type'] == "master" -%} + {% if args['notify'] %} notify yes; - {% else -%} + {% else %} notify no; {%- endif -%} - {% else -%} + {% else %} notify no; + {%- if masters is iterable and masters is not string %} + masters { + {%- for item in masters %} + {{ item }}; + {%- endfor %} + }; + {%- else %} masters { {{ masters }} }; + {%- endif %} {%- endif %} {%- endif %} }; +{%- endmacro %} + +{% for key, args in salt['pillar.get']('bind:configured_zones', {}).items() -%} +{%- set file = args.get('file', salt['pillar.get']("bind:available_zones:" + key + ":file")) %} +{%- set masters = args.get('masters', salt['pillar.get']("bind:available_zones:" + key + ":masters")) %} +{{ zone(key, args, file, masters) }} {% endfor %} + +{%- for name, data in salt['pillar.get']('bind:configured_acls', {}).items() %} +acl {{ name }} { + {%- for d in data %} + {{ d }}; + {%- endfor %} +}; +{%- endfor %}