Автоматическое добавление новых доменов на slaveDNS(bind9)
Скрипт смотрит в конфиг named.conf на мастере на наличие новых доменов. И при появлении новых доменов добавляет их в named.conf на slave сервере. Написан на питоне.
На мастер сервере нужно создать пользователя и добавить его в группу bind, чтобы у него были права на чтение named.conf. Также на master нужно разрешить трансфер зон.
allow-transfer { ip-slave_сервера; };
На slave сервере нужно настроить ssh авторизацию по ключам с master сервером для этого юзера.
Затем получаем сам скрипт и перенесем его в /usr/bin
git clone https://github.com/shmulya/zonefetch
mv zonefetch/fetch.py /usr/bin/fetch.py
Правим там переменные:
MASTERIP — ip master сервера(можно указать несколько серверов в формате [’ip1’,’ip2’])
REMOTE_USERNAME — юзер master сервера у которого есть права на чтение named.conf
PATH_TO_MASTER_ZONEFILE — файл с зонами на master
PATH_TO_SLAVE_ZONEFILE — каталог для файлов с зонами на slave
Скрипт пишет зоны в файлы вида /etc/bind/ip.conf, например для master с ip — 192.168.0.1 это будет /etc/bind/192.168.0.1.conf.
Эти файлы нужно создать предварительно и добавить соответствующие инклуды в /etc/named.conf, например:
include "/etc/bind/192.168.0.1.conf";
В конце добавим скрипт в крон примерно так
*/5 * * * * /usr/bin/python /usr/bin/fetch.py >> /var/log/zonefetch.log 2>&1