Start systemd service conditionally?
Solution 1:
systemd provides a wide variety of conditions you can test. For instance, you can use ConditionPathExists=
to test for the existence of a file.
[Unit]
ConditionPathExists=/etc/sysconfig/cloudformation
Solution 2:
I stumbled upon this question looking for ways to start a systemd service using a condition. There are many ways:
ConditionArchitecture=, ConditionVirtualization=, ConditionHost=, ConditionKernelCommandLine=, ConditionSecurity=, ConditionCapability=, ConditionACPower=, ConditionNeedsUpdate=, ConditionFirstBoot=, ConditionPathExists=, ConditionPathExistsGlob=, ConditionPathIsDirectory=, ConditionPathIsSymbolicLink=, ConditionPathIsMountPoint=, ConditionPathIsReadWrite=, ConditionDirectoryNotEmpty=, ConditionFileNotEmpty=, ConditionFileIsExecutable=
I wanted to start the service based on a specific host name.
ConditionHost
= may be used to match against the hostname or machine ID of the host. This either takes a hostname string (optionally with shell style globs) which is tested against the locally set hostname as returned by gethostname(2), or a machine ID formatted as string (see machine-id(5)). The test may be negated by prepending an exclamation mark.
More on that here.