В 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? Я хотел бы узнать об этом в комментариях.
Дальнейшая информация
- DNSimple: https://dnsimple.com/
- Документы по DNSimple API: http://developer.dnsimple.com/
- DNSimple Ruby Gem: https://github.com/aetrion/dnsimple-ruby
- Слайды: http://bit.ly/continuous-deployment-dns-records
- Наша жемчужина: https://github.com/codeship/dns_deploy
- Наш репозиторий примеров: https://github.com/codeship/dns-example
- Энтони Иден, основатель DNSimple в Twitter: https://twitter.com/aeden