manage_bind
tenhishadow.manage_bind
Это автоматизация для настройки BIND на управляемых серверах. BIND будет проверять конфигурацию и зоны перед перезапуском. Во время выполнения Ansible будет:
- устанавливать и настраивать firewalld (если переменная по умолчанию "firewalld" не переопределена)
- устанавливать BIND в chroot
- настраивать named и зоны с проверкой синтаксиса с помощью named-checkconf и named-checkzone
- перезапускать демон BIND в случае успеха
Требования
Пример плейбука
---
- hosts: external_dns
become: "yes"
become_user: "root"
gather_facts: "true"
any_errors_fatal: "true"
serial: "1" # выполнять по одному, чтобы предотвратить сбой на всех BIND-серверах
vars:
- configs: configs
vars_files:
- configs/ansible_vars.yml
roles:
- tenhishadow.manage_bind
...
Пример файлов для плейбука
.
├── configs
│ ├── ansible_vars.yml # переменные для плейбука, включающие зоны и параметры
│ ├── example.com.zone # файл зоны с записями
│ ├── example1.com.zone # файл зоны с записями
│ ├── named.j2 # центральная конфигурация, которая будет /etc/named.conf
└── playbook.yml
Пример содержимого для ansible_vars.yml:
---
zones:
example.com:
file: "example.com.zone"
zone_serial: '2018052901'
zone_refresh: '3600'
zone_retry: '7200'
zone_expire: '3600000'
zone_minimum: '3600'
example1.com:
file: "example1.com.zone"
zone_serial: '2018081301'
zone_refresh: '3600'
zone_retry: '7200'
zone_expire: '3600000'
zone_minimum: '3600'
...
Пример содержимого для named.j2
# {{ ansible_managed }}
options {
listen-on port 53 { any; };
listen-on-v6 port 53 { any; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
pid-file "/run/named/named.pid";
session-keyfile "/run/named/session.key";
allow-query { any; };
recursion no;
version "AIX 5.1.0";
auth-nxdomain no;
dnssec-enable yes;
dnssec-validation auto;
bindkeys-file "/etc/named.iscdlv.key";
managed-keys-directory "/var/named/dynamic";
transfers-out 100;
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
# НАЧАЛО ЗОН
{% for key, value in zones.iteritems() %}
zone "{{ key }}" {
type master;
file "/var/named/data/{{ value.file }}";
allow-transfer { none; };
};
{% endfor %}
# КОНЕЦ ЗОН
Лицензия
GPL v 3.0
Информация об авторе
Установить
ansible-galaxy install tenhishadow/manage_bind
Лицензия
gpl-3.0
Загрузки
21437
Владелец
DevOps