[systemd-devel] Alias for template/instance service unit

Mantas Mikulėnas grawity at gmail.com
Thu Apr 22 18:49:39 UTC 2021


On Thu, Apr 22, 2021 at 9:18 PM Hans Gruber <moocan2112 at yahoo.fr> wrote:

> Hello,
>
> I am having problems with the aliases and "Alias=' directive related to
> the template service unit.
>
> According to
> https://www.freedesktop.org/software/systemd/man/systemd.unit.html
>
> > "A template instance may only be aliased by another template instance,
> and the instance part must be identical. A template may be aliased by
> another template (in which case the alias applies to all instances of the
> template). As a special case, a template instance (e.g. "alias at inst.service")
> may be a symlink to different template (e.g. "template at inst.service"). In
> that case, just this specific instance is aliased, while other instances of
> the template (e.g. "alias at foo.service", "alias at bar.service") are not
> aliased. Those rule preserve the requirement that the instance (if any) is
> always uniquely defined for a given unit and all its aliases."
>
> I have exactly these two cases and requirements and cannot find example.
>
> >  "A template may be aliased by another template (in which case the alias
> applies to all instances of the template)"
>
> eg: How to create an alias using `Alias=` for a service template core at .service
> which will have maybe 8 or 16 instances (eg: core at cpu01.service
> core at cpu02.service ..) which will apply to all instances when enabled
> using eg allcores at .service.
>

I think you're misunderstanding what "applies to all instances" means. It
does not give you a super-unit that controls all instances in unison --
rather, it gives you a template alias that will provide an alias for *each
instance individually*.

But one instance is still aliased to one instance. For example, if you
alias foo at .service => bar at .service, then you automatically get
foo at cpu1.service => bar at cpu1.service, and so on. That's what template
aliases do.

If you want to control multiple instances at once, you might be looking for
two other features:
1. Custom target units, which allow you to *start* all instances at once;
2. Wildcard support in `systemctl` commands, which allows you to see the
status of all loaded instances at once (systemctl status "foo@*.service").

-- 
Mantas Mikulėnas
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/systemd-devel/attachments/20210422/f80640d5/attachment-0001.htm>


More information about the systemd-devel mailing list