Назад | Перейти на главную страницу

Как группировать / составлять системные службы?

У меня есть три службы systemd (контейнеры Docker, но это не важно). Все три службы должны быть запущены, чтобы приложение работало полностью.

Чтобы упростить процедуры для команды ops, я создал четвертую службу systemd, чтобы сгруппировать их все вместе с помощью Requires и PartOf директивы. Запуск и остановка этой четвертой службы теперь запускают и останавливают три контейнера в правильном порядке.

Последняя задача - заставить четвертую службу systemd показать правильный статус. Сейчас он показывает "загружен / неактивен" после загрузки служб. Можно ли настроить его таким образом, чтобы он отображал "загружено / активно" тогда и только тогда, когда три первые службы запущены и работают?

[Unit]
Description=This is the group
Requires=a.service b.service c.service

[Service]
ExecStart=/bin/echo "Starting"
ExecStop=/bin/echo "Stopping"

[Install]
WantedBy=local.target

В a.service, b.service и c.service содержит PartOf=group.service

Я думаю, вам нужно добавить After= пункт. Если ваши три службы связаны, вы также сможете упростить Requires.

Если вы также хотите, чтобы эта четвертая служба останавливалась, когда останавливаются остальные 3, вам также необходимо добавить BindsTo вход.

Как в:

[Unit]
Description=This is the group
Requires=c.service
After=c.service
BindsTo=c.service