Статьи

Непрерывное развертывание записей DNS с помощью DNSimple

В Codeship мы всегда ищем новые способы использования Codeship для автоматизации наших рабочих процессов. Некоторое время назад мы начали непрерывное развертывание наших DNS-записей.

Как мы управляли нашими записями DNS в прошлом.

Как и все остальные, мы использовали веб-интерфейс нашего DNS-провайдера. В основном это огромная текстовая область, содержащая ваш файл зоны. Мне всегда было неудобно управлять своими записями DNS таким способом. Это слишком легко удалить запись случайно, и ничто не мешает вам сделать это.

Чего не хватает в старом подходе?

  • история
  • Отзывы
  • Моя среда

История
Прежде всего, у вас нет истории вашей зоны. Вы можете видеть и редактировать только последнее состояние вашей зоны. Невозможно понять, почему запись была добавлена ​​или удалена в вашей зоне.

Обзоры
В Codeship мы делаем обзоры кода для всех наших изменений, которые идут в нашу основную ветку. Мы все знаем, что вторая пара глаз всегда лучше. Почему бы не просмотреть изменения, которые входят в вашу зону DNS? Я сломал наш DNS в прошлом из-за какой-то глупой опечатки, которую можно было предотвратить.

Мое окружение
Другая причина, которая, на мой взгляд, является наиболее недооцененной, заключается в том, что мы, разработчики, живем в нашем коде. Выход из моего редактора — огромный шаг, и я не хочу, чтобы меня заставляли использовать что-то еще, кроме моего надежного редактора для кодирования.

Как мы решили это?

История первая. Мы используем Git (и GitHub) для всех наших программных проектов, и Git доказал, что он может очень хорошо отслеживать изменения. Использование Git для отслеживания истории нашей DNS-зоны кажется естественным.

Как мы должны делать обзоры для нашей зоны DNS? Так же, как мы делаем обзоры для нашего кода. Мы уже используем рабочий процесс Pull-Request ( читайте об этом здесь ). Нам нравится этот рабочий процесс, и мы хотим использовать его всегда, когда это возможно.

Вам нужен поставщик DNS, который предлагает вам API для изменения ваших записей DNS. Мы используем DNSimple ( https://dnsimple.com/ ) в качестве нашего DNS-провайдера, потому что они предлагают отличный API и двухфакторную аутентификацию для вашей учетной записи.

Пришло время склеить все вместе. Git, Pull-Request и наш провайдер DNS. Мы открываем источник нашего решения. Не стесняйтесь использовать его! Вы можете найти его здесь: https://github.com/codeship/dns_deploy

Использование Dnsdeploy с Codeship

Мы подготовили пример репозитория, чтобы показать, как вы можете использовать dnsdeploy с Codeship. Вы можете использовать это как шаблон для вашего хранилища DNS.

Вы можете найти репозиторий с примерами на GitHub: https://github.com/codeship/dns-example

Команды настройки Codeship:

> rvm use $(cat .ruby-version) --install
> bundle install

Команды Codeship Test:

> bundle exec ruby validate.rb

Команды развертывания Codeship:

> bash deploy.sh

Вы должны экспортировать свои учетные данные DNSimple как

DNSIMPLE_USERNAME

и

DNSIMPLE_API_TOKEN

Вывод

Удивительно просматривать ваши изменения DNS и отслеживать историю вашей зоны DNS с помощью знакомых вам инструментов.

Теперь я могу просто открыть Pull-запрос в нашем репозитории DNS, чтобы предложить изменения. После того, как кто-то еще в команде проверил мои изменения, они были объединены в основную ветку и, благодаря Codeship, немедленно развернуты.

Новый рабочий процесс делает изменения в нашей DNS-зоне прозрачными и понятными для всех в команде. Кто изменил наши записи SPF в последнее время? Теперь просто ответить на этот вопрос.

Как вы управляете своими записями DNS? Я хотел бы узнать об этом в комментариях.

Дальнейшая информация