Обложка канала

ServerAdmin.ru

12437 @srv_admin

Авторская информация о системном администрировании.

ServerAdmin.ru

4 года назад
Открыть в
Расскажу вам про одну старую и полезную программу в Linux. Обычно её используют в контексте построения кластеров, когда нужно быстро распространить конфигурационные файлы по разным машинам и держать их в единообразном виде. Но на самом деле из-за скорости и простоты настройки её можно использовать и в более простых задачах. Например, для раскладывания свежих сертификатов Let's Encrypt после их обновления. Речь пойдёт про программу csync2. В Debian она давно живёт в базовых репозиториях: # apt install csync2 Настройка аутентификации основана на pre-shared-keys, которые можно сгенерировать самостоятельно с помощью openssl. Дальше ключи раскидываются по серверам и пишется конфиг в несколько строк. Причем csync2 умеет не только синхронизировать файлы, но и перезапускать службы, что очень удобно в случае с сертификатами, так как можно после обновления сразу перезапустить веб-сервер или что-то ещё. Конкретные примеры показывать не буду, так как программа старая и довольно известная. В сети очень много готовых мануалов для неё, которые можно адаптировать под свои потребности. Базовый конфиг с синхронизацией файлов и перезапуском сервисов выглядит примерно так: group websrv {     host node01 node02;     auto younger;       key /etc/csync2.key;     include /etc/letsencrypt/;     action     {         pattern /etc/letsencrypt/*;         exec "nginx -s reload";         do-local;         logfile "/var/log/csync2_action.log";     } } Выполнение синхронизации csync2 можно ставить в post_hook. Она в случае изменения сертификатов в папке /etc/letsencrypt/ выполнит обновление файлов и перезапуск nginx на всех машинах с идентичным конфигом. Если где-то надо перезапустить nginx, а где-то postfix, то это настраивается отдельно. У меня, к примеру, были случаи, когда один и тот же сертификат mail.example.com использовался на почтовом сервере для postfix, на веб сервере для браузерного клиента, а получение было на пограничном nginx. То есть с него нужно было раскидать сертификаты на 2 других сервера. Я это делал с помощью nfs, монтируя директорию с сертификатами всем зависимым серверам. С csync2 это реализовать проще и удобнее. ⇨ Исходники / Документация #linux
GitHub - LINBIT/csync2: file synchronization tool using librsync and current state databases

file synchronization tool using librsync and current state databases - GitHub - LINBIT/csync2: file synchronization tool using librsync and current state databases

GitHub