; Zone INVERSE {{ zone_inverse }} — generee par Set-OPS (role serveur_powerdns). ; Ne pas editer a la main. ; ; LE NOM DE LA ZONE DIT SA PROFONDEUR, et le PTR s'en deduit. Trois etiquettes numeriques ; (`31.0.10.in-addr.arpa`) valent un /24 : le PTR ne porte que le dernier octet. Deux ; (`27.10.in-addr.arpa`) valent un /16 : il en porte deux. Rien n'est ecrit — ni le ; prefixe, ni la forme du nom. ; ; Un TENANT tire un /16 de son index et n'a donc qu'une zone. Un SITE declare plusieurs ; reseaux et en a une par reseau occupe. La meme derivation sert les deux. ; ; Les PTR viennent de la MEME source que les A — les groupes d'inventaire et leur ; `ansible_host`. Deux zones alimentees par une seule verite : c'est ce qui empeche ; l'endroit ou elles divergent d'exister. {% set _labels = zone_inverse | regex_replace('\.in-addr\.arpa\.?$', '') | split('.') %} {% set _prefixe = _labels | reverse | list %} $TTL {{ serveur_powerdns_ttl }} @ IN SOA {{ serveur_powerdns_nameserver }}.{{ serveur_powerdns_zone }}. {{ serveur_powerdns_contact }}. ( {{ serveur_powerdns_serial }} ; serial {{ serveur_powerdns_soa_refresh }} ; refresh {{ serveur_powerdns_soa_retry }} ; retry {{ serveur_powerdns_soa_expire }} ; expire {{ serveur_powerdns_soa_minimum }} ) ; minimum @ IN NS {{ serveur_powerdns_nameserver }}.{{ serveur_powerdns_zone }}. {% set _vus = [] %} {% for _groupe in serveur_powerdns_inventory_groups %} {% for host_name in groups.get(_groupe, []) | sort if host_name not in _vus %} {% set ip = hostvars[host_name].ansible_host | default('') %} {% if ip and (ip.split('.')[:_prefixe | length] == _prefixe) %} {% set _ = _vus.append(host_name) %} {{ ip.split('.')[_prefixe | length:] | reverse | join('.') }} IN PTR {{ host_name }}.{{ serveur_powerdns_zone }}. {% endif %} {% endfor %} {% endfor %}