Як перезавантажити групу системних служб?


12

Я хочу перезавантажити (не перезавантажувати!) Групу служб у разі події.

Наприклад, якщо я оновлюю свої SSL-сертифікати, я хочу, щоб кожна служба, яка використовує їх, була перезавантажена ( nginxі postfixприйшла в голову). Ні я не хочу пам'ятати, які служби на даному сервері використовують сертифікати SSL. Їх має бути достатньо, щоб вони були згруповані під час їх налаштування.

З іншого боку, я хотів би уникати змін .serviceфайлів, наданих з пакетами, оскільки це потребує вручну втручання під час оновлень.

Як я це досягну?

Існує можливість зупинити групу послуг за запитом , але це зробить їх недоступними на секунду-дві, або ще гірше - вони можуть залишатись доти, доки не буде встановлено. Я не можу собі цього дозволити.


Я не впевнений, як ви розгортаєте серти, але тут також є попередня гачка та /opt/letsencrypt/letsencrypt-auto renew --pre-hook "service nginx stop; service postfix stop; service squid stop" --post-hook "service nginx start; service postfix start; service squid start" післячіпка для більшості автоматичних оновлень : certmonger має команди після зберігання та попереднього збереження
Jacob Evans

@JacobEvans Саме цим я і користуюся! Раніше виникла проблема в аналізаторі файлів конфігурації для certbot: він не дозволяв крапку з комою. Тому вам довелося використовувати аргумент командного рядка або робити це за один раз. Зараз все це без потреби.
sanmai

якщо .serviceредагування файлів буде замінено, ви можете уникнути проблеми з оновленням. sudo systemctl edit foo.serviceзбереже ваші зміни, /etc/systemd/system/foo.service.d/override.confа не змінить встановлений foo.serviceфайл.
кіхотично

Відповіді:


21

Створіть /etc/systemd/system/ssl-reload.targetіз наступним вмістом.

[Unit]
Description=Services which need reloaded with SSL certs are updated.
PropagatesReloadTo=nginx postfix

Потім створіть інший файл: /etc/systemd/system/ssl-reload.path

[Unit]
Description=Restart services which use SSL when the cert directory changes

[Path]
PathChanged=/path/to/your/ssl/certs/dir

[Install]
WantedBy=multi-user.target

Тоді:

systemctl enable ssl-reload.path
systemctl start ssl-reload.path

Зважаючи на це, після зміни чогось у вашому каталозі SSL потрібні сервіси повинні бути перезавантажені автоматично.

якщо ви не хочете автоматичної поведінки, не використовуйте .pathфайл, а просто видайте systemctl reload ssl-reload.targetвручну після зміни файлів SSL.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.