У меня есть три службы 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