Discussion:
Umbrella unit for a group of application components
(too old to reply)
Kevin Barry
2018-10-13 13:14:33 UTC
Permalink
Hi All,

Sorry for asking a user question, but it seems there is no user list.
I came here after reading the thread about writing an umbrella unit:
https://lists.freedesktop.org/archives/systemd-devel/2015-July/033610.html

I have similar requirements to the person who asked that question and
want to find the best solution. The application on a server comprises
a few services. I would like an umbrella unit to start those services.
Checking the status of the umbrella unit should only return 0 if all
of the services are up. I want to be able to start or stop individual
components without bringing down the others. Is this possible with
systemd units? I have run into the following problems:

If the umbrella is a target, it starts the services, but still thinks
it is "up" if I stop one or more of the individual components.

So I tried making it into a service (oneshot, /bin/true,
RemainAfterExit - I know this is a hack). If I say it "Wants" the
individual components, then it starts them correctly, but still thinks
it is up even if individual components (which have "PartOf=" set) are
stopped. If I try instead to say it "Requires" (or "BindsTo"), then
the umbrella correctly shows it is not up when one of the components
is stopped, but it also stops all of the other components.

I would like to be able to stop one component and have that reflected
in the status of the umbrella, but without stopping other components.
Is this possible?

Sorry for the long email and I appreciate it if anyone takes the time
to read it. Thanks.

Kevin Barry
Lennart Poettering
2018-10-16 15:54:32 UTC
Permalink
Post by Kevin Barry
So I tried making it into a service (oneshot, /bin/true,
RemainAfterExit - I know this is a hack). If I say it "Wants" the
individual components, then it starts them correctly, but still thinks
it is up even if individual components (which have "PartOf=" set) are
stopped. If I try instead to say it "Requires" (or "BindsTo"), then
the umbrella correctly shows it is not up when one of the components
is stopped, but it also stops all of the other components.
PartOf= pointing from the umbrella target to the component units
should work, no?

Lennart
--
Lennart Poettering, Red Hat
Loading...