[systemd-devel] Best way of configuring service
lists at malte.homeip.net
Mon Sep 24 14:52:54 PDT 2012
Am Montag, 24. September 2012, 21:58:17 schrieb Daniel Tihelka:
> On 9/24/12, Lennart Poettering <lennart at poettering.net> wrote:
> > Hmm, so systemd unit files are not really supposed to the place where
> > daemon-specific configuration bits are encoded. If a daemon requires
> > specific configuration my recommendation is always to introduce a proper
> > configuaration file for it, and not to encode this via env vars or in
> > the cmdline. Administrators will thank you for it!
> OK, thanks. I will try to change cruisecontrol in this way.
> But still, there are java-specific options which must be set (and may
> be required to be customized) as well - for example the -Xmx or -Xms
> settings. And I am most likely not able to change it in java :-)
> So, how to handle those? Yes, it can (rather simply) be done through
> shell wrapper, but my intention was to try to avoid it (well, it was
> motivated by the aim of systemd anyway - to get rid off shell scripts
> from boot sequence). On the other hand, I understand that you don't
> want to create a mega-features-everything-capable-shell-replacement
True, true...but a shell script doesn't *have* to be as ugly as what comes
with some widely used java frameworks and contain like 2k LOC of the most
abominable shell code history has seen just to collect what ends up in a bunch
of env vars and options to the java binary - of which the location is first
determined via large parts of this wrapper...
Actually I think it's a bug in the JRE if things can only be configured on the
command line and not via a (possibly JAR-specific) config file...
anyway, this seems like be one of the few cases where EnvironmentFile= might
be the best solution. As opposed to Environment= this makes it very easy for
the user to override some settings.
You could e.g. run java ... $JAVA_OPTS together with EnvironmentFile=-... (not
teh minus) so the file doesn't even have to exist, but iff the user wants/needs
to tweak memory options, it's only a matter of adding e.g. JAVA_OPTS="-Xms...
-Xmx..." to the env file. With Environment=... you require the user to
overwrite the whole unit instead.
More information about the systemd-devel