lucab85.ansible_role_bind

Rôle Ansible : BIND

CI

Installe et configure un service DNS BIND9 sur Fedora/Centos/RHEL7/8 et Debian/Ubuntu en tant qu'autoritaire pour un ou plusieurs domaines (maître et/ou esclave) avec des zones et des configurations inverses personnalisées.

Exigences

Aucune exigence spéciale ; notez que ce rôle nécessite un accès root, donc exécutez-le dans un playbook avec un become: yes global, ou invoquez le rôle dans votre playbook comme suit :

- hosts: dns
  roles:
    - role: lucab85.ansible_role_bind
      become: yes

Variables du rôle

Les variables disponibles sont répertoriées avec les valeurs par défaut dans le fichier defaults/main.yml.

Configuration principale

Tous les réglages dans bind_main_config_settings sont appliqués dans le fichier de configuration principal /etc/named.conf pour Fedora/CentOS/RHEL ou /etc/bind/named.conf pour Debian/Ubuntu (selon la plateforme). Tous les réglages dans bind_main_options_settings sont appliqués dans le fichier de configuration principal à l'intérieur de la balise options { }. Exemple :

bind_main_options_settings:
  - option: listen-on port
    value: '53 { 127.0.0.1; 10.0.1.1; };'
  - option: allow-query
    value: '{ trusted; };'
  - option: forwarders
    value: '{ 8.8.8.8; 8.8.4.4; };'
  - option: listen-on-v6
    value: '{ any; };'
  - option: dnssec-validation
    value: 'auto;'

Veuillez noter dans cet exemple 10.0.1.1 est l'IPv4 de la machine cible, adaptez-le selon vos besoins.

bind_main_config_settings:
  - option: acl "trusted"
    value: '{ 10.0.1.1; 10.0.1.2; };'

Dans cet exemple, j'ai défini un acl trusted avec deux adresses IPv4 que nous pourrions utiliser pour notre politique (voir plus loin), adaptez-le selon vos besoins.

Exemple de sortie :

#
# Géré par Ansible : Ne pas modifier ce fichier manuellement !
#
options {
    directory "/var/named";
    listen-on port 53 { 127.0.0.1; 10.0.1.1; };
    allow-query { trusted; };
    forwarders { 8.8.8.8; 8.8.4.4; };
    listen-on-v6 { any; };
    dnssec-validation auto;
};
acl "trusted" { 10.0.1.1; 10.0.1.2; };
include "/etc/named/named.conf.local";

Configuration des zones

Les réglages des zones sont définis dans bind_zones_entries et appliqués par le modèle de définition des zones zone.j2. Les réglages de zone sont définis dans le fichier de configuration auxiliaire /etc/named/named.conf.local pour Fedora/CentOS/RHEL et Debian/Ubuntu (selon la plateforme). Les enregistrements de zone sont stockés dans /var/named/[[ example.com.zone ]] pour Fedora/CentOS/RHEL ou /var/lib/bind/[[ example.com.zone ]] pour Debian/Ubuntu (selon la plateforme).

Exemple :

bind_zones_entries:
  - name: "example.com"
    file: "example.com.zone"
    type: "master"
    options: "allow-update { none; };"
    ttl: 86400
    records:
     - name: "@"
       type: "SOA"
       value: "dns1.example.com. hostmaster.example.com. (2001062501 21600 3600 604800 86400)"
     - name: "@"
       type: "NS"
       value: "dns1.example.com."
     - name: "@"
       type: "NS"
       value: "dns2.example.com."
     - name: "dns1"
       type: "A"
       value: "10.0.1.1"
     - name: "dns2"
     [...]

Exemple de sortie locale : /etc/named/named.conf.local

#
# Géré par Ansible : Ne pas modifier ce fichier manuellement !
#
zone "example.com" IN {
    type master;
    file "example.com.zone";
    allow-update { none; };
};
zone "1.0.10.in-addr.arpa" IN {
    type master;
    file "example.com.rr.zone";
    allow-update { none; };
};

Exemple de sortie : /var/named/example.com.zone

$ORIGIN example.com.
$TTL 86400;
@  IN  SOA dns1.example.com. hostmaster.example.com. (2001062501 21600 3600 604800 86400)
@  IN  NS dns1.example.com.
@  IN  NS dns2.example.com.
dns1  IN  A 10.0.1.1
dns2  IN  A 10.0.1.2
@  IN  MX 10 mail1.example.com.
@  IN  MX 20 mail2.example.com.
mail1  IN  A 10.0.1.5
mail2  IN  A 10.0.1.6
services  IN  A 10.0.1.10
services  IN  A 10.0.1.11
ftp  IN  CNAME services.example.com.
www  IN  CNAME services.example.com.

Configuration de la zone inverse

De la même manière que pour la "configuration de zone", vous pouvez également configurer une zone inverse.

Exemple :

- name: "1.0.10.in-addr.arpa"
  file: "example.com.rr.zone"
  type: "master"
  options: "allow-update { none; };"
  ttl: 86400
  records:
   - name: "@"
     type: "SOA"
     value: "dns1.example.com. hostmaster.example.com. (2001062501 21600 3600 604800 86400)"
   - name: "@"
     type: "NS"
     value: "dns1.example.com."
   - name: "@"
     type: "NS"
     value: "dns2.example.com."
   - name: "1"
     type: "PTR"
     value: "dns1.example.com."
     [...]

Exemple de sortie : /var/named/example.com.rr.zone

$ORIGIN 1.0.10.in-addr.arpa.
$TTL 86400;
@  IN  SOA dns1.example.com. hostmaster.example.com. (2001062501 21600 3600 604800 86400)
@  IN  NS dns1.example.com.
@  IN  NS dns2.example.com.
@  IN  NS dns1.example.com.
1  IN  PTR dns1.example.com.
2  IN  PTR dns2.example.com.
5  IN  PTR mail1.example.com.
6  IN  PTR mail2.example.com.
10  IN  PTR services.example.com.
11  IN  PTR services.example.com.

Consultez la documentation BIND pour la définition spécifique des enregistrements.

Dépendances

Aucune.

Exemple de Playbook

- hosts: dns
  become: yes
  vars_files:
    - vars/main.yml
  roles:
    - lucab85.ansible_role_bind

Personnalisez les variables dans vars/main.yml :

bind_zones_entries:
  - name: "example.com"
    file: "example.com.zone"
    type: "master"
    options: "allow-update { none; };"
    ttl: 86400
    records:
     - name: "@"
       type: "SOA"
       value: "dns1.example.com. hostmaster.example.com. (2001062501 21600 3600 604800 86400)"
     - name: "@"
       type: "NS"
       value: "dns1.example.com."
     - name: "@"
       type: "NS"
       value: "dns2.example.com."
     - name: "dns1"
       type: "A"
       value: "10.0.1.1"
     - name: "dns2"
     [...]

Licence

MIT / BSD

Informations sur l'auteur

Ce rôle a été créé en 2021 par Luca Berton, auteur d'Ansible Pilot.

Ansible Pilot

Plus d'informations :

Faire un don

Merci de me soutenir :

À propos du projet

Setup a BIND9 DNS service on Fedora/Centos/RHEL7/8 and Debian/Ubuntu target as authoritative for one or more domains (master and/or slave) with customized zone and reverse.

Installer
ansible-galaxy install lucab85.ansible_role_bind
Licence
mit
Téléchargements
311
Propriétaire
Ansible Automation Engineer with Open Source passion: (Ansible, Progressive Web Applications, Cloud Computing, IoT, GNU/Linux)