$ORIGIN {{ item }}. $TTL 60 @ SOA {{ dnsserver.zones[item].SOA }} {% macro generate_records(records, scope='@') %} {% for k, v in records.items() %} {% if v is string %} {% if k != 'SOA' %} {{ scope }} {{ k }} {{ v }} {% endif %} {% elif v is not mapping %} {% for v2 in v %} {{ scope }} {{ k }} {{ v2 }} {% endfor %} {% endif %} {% endfor %} {% for k, v in records.items() %} {% if v is mapping %} {% if not k.endswith('.') %} {{ generate_records(v, k + ('.' + scope if scope != '@' else '')) }} {%- elif k.endswith('.' + item + '.') or k == (item + '.') %} {{ generate_records(v, k) }} {%- endif %} {%- endif %} {% endfor %} {% endmacro %} {{ generate_records(dnsserver.zones[item]) }}