Я настраиваю службу systemd для обновления моих SSL-сертификатов от letsencrypt. Я бы хотел, чтобы таймер systemd остановил службу nginx, запустил мой скрипт обновления сертификата, а затем перезапустил nginx.
Есть ли у systemd какой-нибудь умный способ сделать это? Или мне просто нужно выполнить соответствующее действие остановки и запуска в самом скрипте?
Letsencrypt имеет хуки до и после обновления.
Добавление этого
[renewal-params]
# Other settings
pre-hook=systemctl stop <service name>
post-hook=systemctl start <service name>
к /etc/letsencrypt/renewal/<domain name>.conf
будет останавливать и запускать службу каждый раз, когда вы запускаете certbot renew
.
Есть ли у systemd какой-нибудь умный способ сделать это? Или мне просто нужно выполнить соответствующее действие остановки и запуска в самом скрипте?
Нет, "умного" пути нет. Проще говоря
systemctl stop <whatever>
и
systemctl start <whatever>
в вашем сценарии обновления по мере необходимости,
Если я правильно понял, вы хотите запланировать остановку nginx, чтобы сократить время простоя.
Я не знаю о системе D, но с любой командой unix вы можете использовать "at" для создания своей собственной команды.
Например
echo "systemctll stop nginx && mv /etc/my/cert/new.cert && systemctll start nginx" | at -m 5:00