marcinpraczko.named

Informations rapides

Ce rôle est un fork du dépôt suivant :

Raisons de la création de ce fork et de ses adaptations :

  • Named est toujours utilisé et il serait bon d'avoir un rôle fonctionnel.
  • Le rôle a une belle structure et est flexible en termes de configuration.
  • Ce rôle ne fonctionnait pas directement et certains problèmes n'ont pas été traités depuis 2015.

Ansible-role-named

Version : 0.1.4

  • Nécessite Ansible 2.0+
  • Compatible avec la plupart des versions de RHEL/CentOS 6.x, 7.x, Debian et Ubuntu

Installation

Directement depuis ansible-galaxy (dernière version)

$ ansible-galaxy install marcinpraczko.named

Directement depuis le dépôt GitHub

Parfois, des modifications ont été appliquées à la branche develop ou feature et ne sont pas encore publiées. Ansible-galaxy permet d'installer des rôles directement depuis GitHub.

mkdir testing-roles
cd testing-roles
ansible-galaxy install -p roles git+https://github.com/marcinpraczko/ansible-role-named.git,develop

L'exemple ci-dessus installera la branche develop. Cela peut être ajusté à n'importe quel commit Git SHA, tag ou nom de branche - selon les besoins.

Pour vérifier quelle version est installée, vous pouvez utiliser la commande :

ansible-galaxy list -p roles

Pour commencer

Installer BIND (named)

L'installation de BIND (named) et de toutes les dépendances requises est très simple et peut se faire avant la configuration ou individuellement :

Installez seulement

$ ansible-playbook -t install -i hosts named.yml

Exécuter le Playbook complet

$ ansible-playbook -i hosts named.yml

Exemple de Playbook, d'Hôtes et de Variables de Groupe

Exemple de Playbook

- name: "Actions nécessaires pour mettre les maîtres dans un état heureux"
  hosts: named_masters
  remote_user: root

  roles:
    - "marcinpraczko.named"

- name: "Actions nécessaires pour mettre les esclaves dans un état heureux"
  hosts: named_slaves
  remote_user: root

  roles:
    - "marcinpraczko.named"

Exemple d'Hôtes

[named_masters]
127.0.0.1

#[named_slaves]
#127.0.0.1

Exemple de Variables de Groupe

named_masters :

named_acls:
  public_slaves:
    - 8.8.8.8
    - 9.9.9.9
  private_slaves:
    - 192.168.25.5
    - 192.168.25.6

named_zones:
# Remarquez le _ ici, cela rend ansible heureux et est remplacé plus tard dans la configuration 
# et les zones automatiquement
  foo_com:
    type: master
    allow_transfer:
      - public_slaves
    ttl: 3000

named_slaves :

named_zones_create_masters: False 

named_zones:
# Remarquez le _ ici, cela rend ansible heureux et est remplacé plus tard dans la configuration 
# et les zones automatiquement
  foo_com:
    type: slave
    master:
      - 7.7.7.7

Ce rôle se compose de tâches d'installation et de configuration, qui sont taguées soit install soit configure et peuvent être exécutées individuellement ou ensemble. Ce rôle a des actions pour créer un fichier named.conf et un fichier included.conf qui contiendra des ACL et des inclusions de zone, et des fichiers de zone dynamiques basés sur des variables par défaut ou de groupe.

Configurables

Il y a pas mal de paramètres configurables dans ce rôle, voici une liste résumée des valeurs par défaut (une liste à jour peut être trouvée dans defaults/main.yml) :

## Options d'installation
named_conf_file_location: /etc/named.conf

# Assurez-vous que ceux-ci sont corrects pour votre système d'exploitation
named_user: named
named_group: named
named_service_name: named

# Paramètres spécifiques à Monit
named_monit_enable: False
named_monit_service_name: monit
named_monit_conf_directory: /etc/monit.d
named_pid_file: /var/run/named/named.pid
named_service_file: /etc/init.d/named

## Options de configuration de base

# Section des options
named_conf_listen_on_port: 53
named_conf_listen_on_interface:
  - 127.0.0.1
named_conf_listen_on_v6_port: 53
named_conf_listen_on_v6_interface:
  - ::1
named_conf_notify: "no"
named_conf_forwarders:
  - 7.7.7.7
  - 7.7.8.8
named_conf_directory: /var/named
named_conf_dump_file: /var/named/data/cache_dump.db
named_conf_statistics_file: /var/named/data/named_stats.txt
named_conf_memstatistics_file: /var/named/data/named_mem_stats.txt
named_conf_allow_query:
  - any
#named_conf_allow_transfer: none
named_conf_recursion: no
named_conf_dnssec_enable: yes
named_conf_dnssec_validation: yes
named_conf_dnssec_lookaside: auto
named_conf_bindkeys_file: /etc/named.iscdlv.key
named_conf_managed_keys_directory: /var/named/dynamic

# Section de journalisation
named_conf_logging_channel: default_debug
named_conf_logging_file_directory: /var/log/named
named_conf_logging_file: named.log
named_conf_logging_severity: info
named_conf_logging_print_severity: yes
named_conf_logging_print_time: yes
named_conf_logging_print_category: yes
named_conf_logging_category_name: default
named_conf_logging_categories:
  - default_debug

named_conf_includes_directory: /etc/named

### Pas de ACL par défaut ou d'inclusions

## Paramètres Maître
# Cette configuration détermine si les fichiers de zone doivent être créés dans le répertoire déclaré
# Normalement, vous ne voudriez pas créer cela si vous configurez un hôte esclave.
named_zones_create_masters: True

### Valeurs par défaut de configuration de zone
named_conf_zone_ttl: 21600
named_conf_zone_soa: foo.com. noc.foo.com.
named_conf_zone_refresh: 21600
named_conf_zone_retry: 600
named_conf_zone_expire: 86400
named_conf_zone_expire_min: 3000

Remarquez que vous pouvez spécifier des variables par défaut pour la création de fichiers de zone dynamiques, ce qui peut permettre de réduire considérablement les fichiers group_var car vous pouvez seulement spécifier les surcharges pour les zones nécessitant des paramètres en dehors des valeurs par défaut.

Faits

Les faits suivants sont accessibles dans votre inventaire ou en dehors de ce rôle.

  • {{ ansible_local.named.interfaces_ipv4 }}
  • {{ ansible_local.named.interfaces_ipv6 }}
  • {{ ansible_local.named.port_ipv4 }}
  • {{ ansible_local.named.port_ipv6 }}

Tests

  • À l'origine, le rôle n'avait qu'un fichier travis.
  • Ajout de la configuration molecule pour permettre de tester ce rôle localement.

Molecule permet de tester les rôles ansible localement en utilisant docker ou vagrant. Cela aide également à exécuter des validations comme serverspec ou testinfra.

Tout cela facilite beaucoup le test de ce rôle.

Installer les paquets requis

  • Docker
  • Vagrant

Installer molecule

  • Installez un environnement virtuel Python sur votre système.
  • Installez molecule dans l'environnement virtuel Python.
virtualenv venv
source venv/bin/activate

# Mettez à jour les paquets pip courants
pip install -U pip setuptools wheel

# Installez molecule avec les paquets Python requis
pip install -r tests/requirements.txt

Tester avec molecule

La commande suivante doit permettre de tester le rôle avec le driver Vagrant.

REMARQUE : L'exécution de cette commande pour la première fois prend plus de temps (l'image Vagrant complète doit être téléchargée sur l'hôte local).

molecule test --sudo

La commande ci-dessus exécutera --sudo uniquement pour les outils de vérification, par exemple testinfra ou serverspec, etc. Cette option --sudo n'a pas d'effet sur le fonctionnement d'ansible.

À propos du projet

A highly configurable role for BIND (named) versions >9

Installer
ansible-galaxy install marcinpraczko.named
Licence
gpl-2.0
Téléchargements
75
Propriétaire