Конфигурация DNS-зон в Git
Много лет уже пишу, веду свои сайты. И за все это время приходилось пользоваться различными регистраторами доменов. У кого-то панель управления была лучше, у кого-то хуже, но всегда приходилось вносить изменения только вручную. И хорошо, если регистратор предоставлял возможность провести импорт/экспорт зоны из файла, что значительно снижало затраты времени на перенос конфигурации.
Все это время была мечта перенести конфигурацию в git-репозиторий и проводить изменение конфигурации автоматически. Зафиксировал изменения в репозитории и спустя минуту они уже в домене. Только сейчас дошли руки до того, чтобы провести исследование по существующим наработкам по данной теме и обнаружил целый клондайк! Массу программ на различных языках программирования.
Остановил свой выбор на dnscontrol , написанном на Go, а значит позволяющей использовать бинарные файлы в различных операционных системах. Поддерживает большое число различных провайдеров, и довольно простая в использовании.
Установка тривиальна, либо использовать homebrew:
brew install dnscontrol
Либо скомпилировать с помощью Golang:
go get github.com/StackExchange/dnscontrol
Создал репозиторий juev/dns-config , в котором описал текущую конфигурацию своих доменов.
Для использования достаточно создать два файла:
dnsconfig.js
creds.json
В первом описывается конфигурация доменов, во втором размещаются ключи и токены для доступа к регистратору. При этом для того, чтобы можно было разместить второй файл в репозитории, сами токены можно размещать в переменных среды. А в конфигурации использовать имена их переменных.
После создания конфигурации достаточно проверить внесенные изменения с помощью команды:
dnscontrol preview
И если все устраивает, применить ее:
dnscontrol push
Возможностей у программы намного больше, чем описываю тут. Вам стоит взглянуть на нее самостоятельно.