Перейти к основному содержанию

OctoDNS — DNS как код

DNS

DNS — это важная часть почти любого достаточно продвинутого web-проекта.

DNS (Domain Name System) — компьютерная распределённая система для получения информации о доменах. Чаще всего используется для получения IP-адреса по имени хоста, получения информации о маршрутизации почты и/или обслуживающих узлах для протоколов в домене.

На начальных этапах обычно DNS управляется вручную. В процессе усложнение системы появляется много доменов, поддоменов, DNS записей. Конфигурацию DNS необходимо резервировать, бэкапировать, хранить версионность изменений и, в конце концов, автоматизировать.

В эпоху облачных технологий и микросервисной архитектуры традиционные методы управления DNS через веб-интерфейсы становятся узким местом DevOps-процессов. Ручное редактирование записей, отсутствие контроля версий, человеческие ошибки при массовых изменениях — все эти проблемы знакомы каждому системному администратору. Именно для решения этих задач был создан OctoDNS — инструмент с открытым исходным кодом от GitHub, который реализует принципы Infrastructure as Code (IaaC) для управления DNS.

https://github.com/octodns/octodns

Infrastructure as Code (IaaC) или ИНфраструктура как код — это подход к управлению инфраструктурой, при котором все компоненты (серверы, сети, настройки) описываются в декларативных конфигурационных файлах, которые можно версионировать, тестировать и автоматически развертывать.

OctoDNS и воплощает философию IaaC в мире DNS. Инструмент не единственный, но часто используемый.

Ключевые принципы IaaC в OctoDNS

  • Декларативность — вы описываете ЖЕЛАЕМОЕ состояние DNS-зоны, а инструмент сам определяет, какие изменения необходимы для достижения этого состояния.
  • Идемпотентность — многократное применение одной и той же конфигурации дает одинаковый результат. Это исключает дрейф конфигураций.
  • Версионирование — все изменения хранятся в Git, что позволяет отслеживать историю, делать откаты и понимать, кто и когда внес изменения.
  • Тестируемость — конфигурации можно проверять на синтаксические ошибки, тестировать в изолированных средах перед применением в продакшене.
  • Автоматизация — процесс развертывания полностью автоматизирован через CI/CD-пайплайны.

Одна из самых мощных возможностей OctoDNS — поддержка множества DNS-провайдеров одновременно:

Основные поддерживаемые провайдеры

  • AWS Route53
  • Cloudflare
  • Google Cloud DNS
  • Azure DNS
  • DigitalOcean
  • DNSimple
  • PowerDNS
  • И другие через плагины

Давайте попробуем что-нибудь провернуть с помощью OctoDNS.

OctoDNS и bind9

К примеру, мы имеем файл зоны, уже работающий в bind9 сервере. Требуется сконвертировать его в формат YAML для OctoDNS, чтобы в будущем использовать для развертывания данной DNS зоны у какого-нибудь облачного провайдера, поддерживающего оправление DNS зонами посредством OctoDNS.

Установка OctoDNS и плагинов

Установка Python 3, virtualenv и pip3:

sudo apt-get update
sudo apt-get install python3 virtualenv
sudo apt-get install python3-pip

Создание рабочих директорий:

mkdir -p ~/octodns/{config,zones}
cd ~/octodns

Создание виртуальной среды:

virtualenv env
source env/bin/activate

Установка пакетов:

pip3 install octodns octodns-bind

Проверим версию:

octodns-sync --version

У меня octoDNS 1.15.0.

Работа с файлом зоны

В папку ~/octodns/zones скопируем наш файл зоны, к примеру, example.com.zone. Если серийный номер в файде задан как %SERIAL%, заменим его на INT число.

В папке ~/octodns/config создаем конфигурационный файл config.yaml:

---
providers:
 zonefile:
   class: octodns_bind.ZoneFileSource
   directory: ./zones
   file_extension: .zone
 config:
   class: octodns.provider.yaml.YamlProvider
   directory: ./output_yaml
zones:
 example.com.:
   sources:
     - zonefile
   targets:
     - config

Попробуем сконвертировать в директории ~/octodns.

octodns-sync --config-file=./config/config.yaml --doit

И в директории ~/octodns/output_yaml получаем файл example.com.yaml.

Теги

 

Похожие материалы

Установка IIS в Windows Server 2012 R2

Пришла задача поднять IIS на Windows Server 2012 R2 для CRM BPM Online от Terrasoft. Указанные ниже настройки достаточны для работы данной приблуды. Однако, пришлось также забраться в конфиги данной сторонней системы и кое что править руками. Но это уже не относится к установке IIS и опысываться здесь не будет.

Теги