Назад | Перейти на главную страницу

Быстрый способ дублировать зоны в BIND

У нас есть стандартная установка высокой доступности на объекте совместного размещения, на котором мы размещаем клиентские программы. Для некоторых программ мы размещаем DNS, но я считаю, что настройка нескольких зон вручную может быть утомительной и подверженной ошибкам. Есть ли простой способ настроить стандартный шаблон файла зоны и как запустить sed, awk или другую программу для обработки набора переменных из другого файла и объединения их с шаблоном для создания файла зоны?

Я думал об использовании m4, но я не очень разбираюсь в этом, и он кажется идеальным только для объединения одного шаблона за раз.

В идеале я бы хотел взять стандартный шаблон файла зоны и объединить его со списком вроде этого:

domain1 = ip1
domain2 = ip2
domain3 = ip1
domain4 = ip1
и т.д...

Есть ли способ написать это по сценарию?

Я думаю, что m4 будет излишним. Моим первым побуждением было бы bash + sed, но если вы хоть немного знакомы с языком более высокого уровня, это может быть проще. Я могу представить себе что-то вроде этого:

Файл данных:

example.com:192.168.10.1
fake.com:192.168.10.2
foo.com:192.168.10.3
bar.com:192.168.10.4

Сценарий:

#!/bin/bash

DATAFILE=datafile
TEMPLATE=template.txt

for data in $(cat $DATAFILE)
do
    dom=${data%:*}
    ip=${data#*:}
    sed "{ s/DOMAIN/$dom/;
           s/IPADDR/$ip/;
         }" $TEMPLATE > $dom.zone
done

И ваш файл зоны шаблона будет иметь "ДОМЕН" или "IPADDR", где это необходимо.

Это полностью не проверено и перед использованием следует доработать.