Commit Graph

31 Commits

Author SHA1 Message Date
Dmitriy Rabotyagov b763b73ffc Fix linters and metadata
With update of ansible-lint to version >=6.0.0 a lot of new
linters were added, that enabled by default. In order to comply
with linter rules we're applying changes to the role.

With that we also update metdata to reflect current state.

Change-Id: I4aab8ba621228d3fbf79b1da8227be41f3258b5f
2023-07-12 11:58:33 +00:00
Dmitriy Rabotyagov 62bd24859e Allow to define pre-start and post-stop tasks
WHile you can leverage config_overrides for that, it might become
tricky if you need to define more then 1 pre/post exec tasks.

Change-Id: I3d8b36f5e9f4be89eaff848d8ba88a38ce5285e4
2022-10-14 12:11:06 +02:00
Jonathan Rosser 1013a1526e Allow StandardOutput to be set for a systemd service
See https://www.freedesktop.org/software/systemd/man/systemd.exec.html

Change-Id: I64470b53f5177e9a4e450beaa474036e44705349
2022-01-27 12:13:05 +00:00
Dmitriy Rabotyagov 1f7091a11c Add ability to create templated services
This functionality is pretty neat and used widely if you need to pass
specific argument to the unit service, but rest of the parameters can
be left intact.

Change-Id: I6eb80ac0f9f0257402697a255518bb2c66d0dfd5
2022-01-14 10:37:39 +00:00
Jonathan Rosser 0589c81386 Add 'load' boolean for services.
Some services, such as socket activated ones with '@' naming cannot be
loaded.

Change-Id: I7d95378f393c8b8cc729cc9b3a30dfe4208393b2
2022-01-13 10:01:32 +00:00
Jonathan Rosser abbc5c8ab8 Suppress 'Service' directive if ListenStream is specified
This is mutually exclusive configuration

Change-Id: Icf43a8421f4d52570ea89f5db0722c0d99bafd85
2022-01-11 03:25:53 -05:00
Dmitriy Rabotyagov fc698fb11a Use slice name for lock/run by default
Change-Id: I883d6520e7da4491929252677193f733808da6a3
2021-11-30 12:39:38 +00:00
Dmitriy Rabotyagov a3800b6368 Deprecate systemd_lock_path variable
To remove complexity from the code we remove variable systemd_lock_path
since variable systemd_lock_dir with common functionality has been
introduced.

Change-Id: I61bb44450a7fb1cface2b93302e02c8fd358a034
2021-11-04 20:41:24 +02:00
Dmitriy Rabotyagov 46185f389e Update run and lock path for systemd
Since /var/run is a symlink to /run and /var/lock is a symlink to
/run/lock for all modern operationg systems, it makes sense to
change default paths that are used.

To make such changes more flexible, ``systemd_run_dir`` and
``systemd_lock_dir`` are introduced.

Change-Id: I60d321fcdce3d3a94233cc25c92898d9e9f2a9b8
2021-11-04 20:30:47 +02:00
Dmitriy Rabotyagov 6bebc97d86 Add option to create systemd native service overrides
Since there might be a necessity to override already existing in the
system services, like provided ones by system packages, which we
just want to adjust, we need option to create service overrides in
systemd.servce.d directory.

Change-Id: Ic7488edbc0487fe932c706dc26f2f8adb36cb427
2021-01-06 10:53:22 +00:00
Dmitriy Rabotyagov 763eb7638f Add possibility to configure systemd sockets
We need to be able to configure systemd-sockets. Since they are attached
to the service it make sense to make it as an element to the service.

Change-Id: Ic481921151fc8d7af7f1ca9b003adb8e3c967e16
2021-01-06 10:53:07 +00:00
Jonathan Rosser 9924a05f97 Revert "Build out the PrivateNetwork function for services"
This reverts commit 6285b6c638.

There is no use made of this functionality anywhere outside the tests
for this role, so revert the code. The intention is to reduce general
overhead in systemd_service and reduce the number of skipped tasks
in an OSA deployment.

Conflicts: tests/test.yml
Change-Id: I3d28967a64ea9d91219294bdc30d337c9c6d2e50
2020-06-10 08:18:26 +01:00
Logan V 9fd965fc1b Require network-online insetad of network target
Depending on the network-online.target rather than network.target
will result in more reliable service startups since network.target
does not indicate that the network stack has fully started, only
that networking has been initialized. When starting network-related
services like neturon, where a bridge or veth interface may be
expected to exist already, relying on network.target can cause broken
service startup during system reboots since the interfaces depended
on may not exist yet once network.target is reached.

By relying on network-online.target instead, units will start more
reliably during system reboots or network restarts.

The systemd docs at
https://www.freedesktop.org/wiki/Software/systemd/NetworkTarget/#conceptsinsystemd
provide more information about why we should use the network-online
instead of the network target.

Change-Id: I7fca0af11bf7a0fed18294c97b81ef1dfa074e34
2019-05-03 10:20:08 -06:00
Kevin Carter 6285b6c638 Build out the PrivateNetwork function for services
This change adds the ability to effectively use the PrivateNetwork
functionality systemd provides for services. Now, if enabled, services
can be created in a network namespace which isolates it from the reset
of the host. Additional options have been added allowing access into the
network namespace over ephemeral devices as needed.

Highlights:
* Isolated private networking for services will sandbox using a stand
  alone namespace which has no access to anything via the network.
* Access into a private namespace can be provided over a single network
  interface which can be IP'd via local DHCP + NAT or using an upstream
  DHCP server.
* Tests have been added to exercise the new functionality.

All of the funcality has been documented in the defaults of this role.

Change-Id: I6751765131f32393a1605eb2100bec46199d980a
Signed-off-by: Kevin Carter <kevin@cloudnull.com>
2019-02-09 04:06:44 +00:00
James Denton 6907b0c9f2 Allow PartOf to be defined in unit section
This patch allows PartOf to be defined in the [Unit] section of
a given systemd service. Doing so creates a one-way dependency
on the given service that is limited to stopping and restarting of units.

Change-Id: I2b802d868ba0c8b085379daae8a9fa4f36281eea
2019-01-26 00:02:17 -06:00
Benoît Knecht d11744b1ef Add options to set DynamicUser and StateDirectory
Make sure those options are only set if systemd >= 235, since they were
introduced in that version.

Change-Id: I51f133931a73d648604b5166a7c09da6ffd4c178
Related-Bug: 1805847
2019-01-14 14:13:48 +01:00
Kevin Carter 79e6cdb138 Add docs and tests to the environment capabilities
Systemd service units may require additional environment settings to
be effective. This patch adds two new variables to the systemd_service
role which will allow operators to add environment variables to a
given service as needed. These options be be supplied globally or
from within a service definition.

Documentation on how these options are used has been added to the
defaults file.

A test has been added to ensure we're exercising the new capability.

Change-Id: If4ea993b7173ac3218f051a1d4f0fba9aeb838ea
Signed-off-by: Kevin Carter <kevin@cloudnull.com>
2019-01-11 13:26:30 -06:00
Kevin Carter 86ad639f41 Fix global lock path usage
The option `systemd_lock_path` is intended to be set globally
and locally however the global implementation has never been
implemented.

  * The global option will ensure the run and lock path is setup
    for all services within the `systemd_services` array.
  * The local option provices a way to override a global lock path
    based on specific service needs.

Change-Id: I373b8905c01ff666b5705bd3bb3c76c3e74a64ab
2018-12-27 17:52:57 -06:00
Jimmy McCrory a5e3dee6fa Allow services to provide after_targets directly
Add 'after_targets' as its own key inside a systemd services dictionary
instead of using config_template overrides.

Change-Id: I8d2ae74010c040544b8099f596678acd71e727e9
2018-11-02 06:28:24 -07:00
Kevin Carter c93accc06d
Set private sandbox options to false by default
The private sandbox options are emitting odd behaviour in newer kernels.
This change sets the sandbox options to false by default so that we're
not creating unexpected issues.

Change-Id: I670ae94525f80e70f03327591cba0e27c2ac0f2b
Signed-off-by: Kevin Carter <kevin.carter@rackspace.com>
2018-08-14 15:22:39 -05:00
Kevin Carter d1472289c2
Add timer services
Systemd provides for "timers" which is replacing cron. This change
implements timers as an option to any created service.

Change-Id: I8fdca58fcb43726560521c7c25f7e57cfb61353b
Signed-off-by: Kevin Carter <kevin.carter@rackspace.com>
2018-05-02 11:19:50 -05:00
Kevin Carter 1c580bbdbc
Add a documentation list default
This change adds the documentation list default to our systemd service
files when populated. This is feature will provide us the ability to
link services to specific documentation which operators will be able to
see when querying a service.

Change-Id: I514d907ccbb52cc6010a29c4c3e10eb2cf558dfa
Signed-off-by: Kevin Carter <kevin.carter@rackspace.com>
2018-04-03 11:17:41 -05:00
Logan V 72efb59ad5 Add service restart handler
A global var systemd_service_restart_changed is added which toggles
restart on unit file change for all systemd_services.

A systemd_services var 'restart_changed' is added to toggle restarts
on a per-service basis.

systemd daemon is not reloaded in a loop anymore, it is only
reloaded once, in a handler, when unit files change.

Consumer roles of systemd_service can listen to the handler
'systemd service changed' to implement additional orchestration when
service units are modified.

Change-Id: I803bca638c30696004f934ad1e28920786948f38
2018-03-23 02:22:46 +00:00
Kevin Carter 7745439f35
Add tests to the service role
* Document the optionality in the defaults
* validate the input in the tasks before it's templated
* Standardize on the exec(starts,stops,reloads} interface
* Update the readme
* Add functional test

Change-Id: Icae36f970178b1cc79d069a94321afb1732a8c5c
Signed-off-by: Kevin Carter <kevin.carter@rackspace.com>
2018-03-21 17:47:22 -05:00
Logan V 134c6f7f24 Simplify unit file
Combine the flow for simple and oneshot services into one set of
execstart/execreload/execstop loops.

Change-Id: I2c250f7d0d14747b50fd77f54d3777c28f11e957
2018-03-20 23:35:40 -05:00
Kevin Carter 00fd8cfc70
add more options
Signed-off-by: Kevin Carter <kevin.carter@rackspace.com>
2018-03-08 20:32:52 -06:00
Kevin Carter 9a4ed2d7bc
updated things so this role is usable
Signed-off-by: Kevin Carter <kevin.carter@rackspace.com>
2018-03-08 17:54:13 -06:00
Kevin Carter c302169881
include built docs
Signed-off-by: Kevin Carter <kevin.carter@rackspace.com>
2017-05-22 23:46:39 -05:00
Kevin Carter 70539b4c1c
added additional docs
Signed-off-by: Kevin Carter <kevin.carter@rackspace.com>
2017-05-22 21:55:20 -05:00
Kevin Carter ad5f161217
correct defaults and tags
Signed-off-by: Kevin Carter <kevin.carter@rackspace.com>
2017-05-19 20:56:53 -05:00
Kevin Carter 3287637b2d
Initial Commit
Signed-off-by: Kevin Carter <kevin.carter@rackspace.com>
2017-05-19 10:24:55 -05:00