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.
ansible-galaxy install marcinpraczko/ansible-role-named