Автоматизация и первонах
Сказ про NGINX и Dehydrated.
Проблема.
Есть у меня в подчинении NGINX с кучей хостов. Практически на каждом хосте SSL-сертификат.Для получения и обновления сертификатов я использую Dehydrated — он гораздо удобнее LetsEncrypt'а.
Вот с обновлением сертификатов-то как раз и возникла проблема. Начнём с того, что я уже таки умею в автоматизацию рутинных процессов и уже конечно догадался запуск Dehydrated для автообновления сертификатов положить в cron. Более того (!) у Dehydrated есть хуки, с помощью которых можно очень круто отслеживать действия с сертификатами. А вот теперь боль — хук срабатывает на каждый обновлённый сертификат, а у меня в один день было выпущено около 20 сертификатов и, соответственно, обновляются все они в один день. И всё бы было хорошо, но NGINX не умеет подтягивать новые сертификаты через service nginx reload, он их подтягивает только при service nginx restart. В таком разрезе использование хука приводит у меня к перезапуску NGINX аж целых 20 раз.
Решение.
"На каждую жопу у нас найдётся свой ствол с гвоздями" — кто-то из великих.
Посмотрел я на то безобразие и понял, что делать с этим всё равно что-то придётся. Если не использовать автоматизацию, то придётся сидеть и каждый день отслеживать сертификаты, а этого я вообще не хочу.
Собственно родился скриптик на bash, который (естественно) запускается по крону раз в день и при наличии обновлённых сертификатов один раз перезапускает NGINX. Вся магия в хуке Dehydrated — в функции deploy_cert() я просто в нужном месте создаю файл-флаг, который потом и отслеживает скрипт.
Всё гениальное — просто!
Вот вам ссылка репозиторий на GitHub. Пользуйтесь.
Комментарии
Отправить комментарий