named

Быстрая информация

Эта роль является форком следующего репозитория:

Причины создания этого форка и его адаптации:

  • Named все еще используется, и было бы хорошо иметь рабочую роль.
  • У роли хорошая структура и гибкость в настройках.
  • Эта роль не работала «из коробки», и некоторые проблемы не были решены с 2015 года.

Ansible-role-named

Версия: 0.1.4

  • Требуется Ansible 2.0+
  • Совместима с большинством версий RHEL/CentOS 6.x, 7.x, Debian и Ubuntu

Установка

Прямо из ansible-galaxy (последний релиз)

$ ansible-galaxy install marcinpraczko.named

Прямо из репозитория GitHub

Иногда в ветках develop или feature были внесены изменения, которые еще не выпущены. Ansible-galaxy позволяет устанавливать роли прямо из GitHub.

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

В приведенном примере будет установлена ветка develop. Это можно настроить на любой git SHA коммит, тег или имя ветки — в зависимости от требований.

Проверить, какая версия установлена, можно с помощью команды:

ansible-galaxy list -p roles

Начало работы

Установка BIND (named)

Установка BIND (named) и всех необходимых зависимостей очень проста и может быть выполнена до конфигурации или отдельно:

Установить только

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

Запуск всего плейбука

$ ansible-playbook -i hosts named.yml

Пример плейбука, хостов и переменных группы

Пример плейбука

- name: "Действия, необходимые для приведения мастеров в счастливыми состояние"
  hosts: named_masters
  remote_user: root

  roles:
    - "marcinpraczko.named"

- name: "Действия, необходимые для приведения слейвов в счастливыми состояние"
  hosts: named_slaves
  remote_user: root

  roles:
    - "marcinpraczko.named"

Пример хостов

[named_masters]
127.0.0.1

#[named_slaves]
#127.0.0.1

Пример переменных группы

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:
# Обратите внимание на _ здесь, это делает ansible счастливым, и заменяется позже в конфигурации
# и зонах автоматически
  foo_com:
    type: master
    allow_transfer:
      - public_slaves
    ttl: 3000

named_slaves:

named_zones_create_masters: False 

named_zones:
# Обратите внимание на _ здесь, это делает ansible счастливым, и заменяется позже в конфигурации
# и зонах автоматически
  foo_com:
    type: slave
    master:
      - 7.7.7.7

Эта роль состоит из задач установки и конфигурации, которые помечены либо как install, либо как configure и могут быть выполнены отдельно или все вместе. Эта роль имеет действия для создания файлов named.conf и included.conf, которые будут содержать acl и включения зон, а также динамические файлы зон на основе переменных по умолчанию или групповых переменных.

Конфигурационные параметры

В этой роли есть довольно много настраиваемых параметров, вот краткий список стандартных значений (актуальный список можно найти в defaults/main.yml):

## Параметры установки
named_conf_file_location: /etc/named.conf

# Убедитесь, что это правильно для вашей ОС
named_user: named
named_group: named
named_service_name: named

# Настройки, специфичные для 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

## Базовые параметры конфигурации

# Раздел параметров
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

# Раздел журналирования
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

### Нет значений acls или включений по умолчанию

## Настройки мастер-сервера
# Эта настройка определяет, должны ли файлы зон создаваться в объявленной
# директории мастеров. Обычно не стоит создавать их, если вы
# настраиваете слейв-хост.
named_zones_create_masters: True

### Параметры конфигурации зон по умолчанию
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

Обратите внимание, что вы можете задать значения по умолчанию для создания динамических файлов зон, это может значительно сократить файлы group_var, так как вы можете указывать только переопределения для зон, которые требуют настроек, выходящих за рамки значений по умолчанию.

Факты

Следующие факты доступны в вашем инвентаре или вне этой роли.

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

Тестирование

  • Изначально роль имела только файл travis.
  • Добавлена конфигурация molecule, чтобы позволить тестировать эту роль локально.

Molecule позволяет тестировать роли ansible локально, используя docker или vagrant. Также это помогает проводить валидацию, такую как serverspec или testinfra.

Все это делает тестирование этой роли намного проще.

Установка необходимых пакетов

  • Docker
  • Vagrant

Установка molecule

  • Установите python virtual environment на вашей системе.
  • Установите molecule в python virtual environment.
virtualenv venv
source venv/bin/activate

# Обновите основные пакеты pip
pip install -U pip setuptools wheel

# Установите molecule с необходимыми python пакетами
pip install -r tests/requirements.txt

Тестирование с molecule

Следующая команда позволит протестировать роль с драйвером Vagrant.

ПРИМЕЧАНИЕ: Запуск следующей команды в первый раз занимает больше времени (полный образ Vagrant должен быть загружен на локальный хост).

molecule test --sudo

Вышеприведенная команда выполнит --sudo только для инструментов проверки, например testinfra или serverspec и т.д. Эта опция --sudo не влияет на то, как выполняется ansible.

О проекте

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

Установить
ansible-galaxy install marcinpraczko/ansible-role-named
Лицензия
gpl-2.0
Загрузки
64
Владелец