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
This commit is contained in:
parent
11af14d126
commit
763eb7638f
@ -111,6 +111,16 @@ systemd_environment: {}
|
|||||||
# `dynamic_user` -- (optional) Dynamically set a UNIX user and group when the unit is started; only works if systemd >= 235.
|
# `dynamic_user` -- (optional) Dynamically set a UNIX user and group when the unit is started; only works if systemd >= 235.
|
||||||
# `state_directory` -- (optional) Relative path the state directory; only works if systemd >= 235.
|
# `state_directory` -- (optional) Relative path the state directory; only works if systemd >= 235.
|
||||||
|
|
||||||
|
# Under the service dictionary the "sockets" key can be added, which may contain list of the sockets
|
||||||
|
# for the given service_name. Each socket in the lsit may have following structure:
|
||||||
|
# `socket_name` -- (required) Name of created socket
|
||||||
|
# `after_targets` -- (optional) Start the socket after this list of dependency units.
|
||||||
|
# `before_targets` -- (optional) Start the socket before this list of dependency units.
|
||||||
|
# `bind_targets` -- (optional) Bind the socket to this dependency unit.
|
||||||
|
# `enabled` -- (optional) Set the enabled state of the socket.
|
||||||
|
# `options` -- (optional) Additional options, like `ListenStream` or other
|
||||||
|
# `state` -- (optional) Set the running state of the socket.
|
||||||
|
|
||||||
# Under the service dictionary the "timer" key can be added which will enable a given service
|
# Under the service dictionary the "timer" key can be added which will enable a given service
|
||||||
# as a timer (Legacy cron job).
|
# as a timer (Legacy cron job).
|
||||||
# `options` -- (optional) This allows any section or key=value pair to be set within the systemd timer file.
|
# `options` -- (optional) This allows any section or key=value pair to be set within the systemd timer file.
|
||||||
@ -170,6 +180,19 @@ systemd_environment: {}
|
|||||||
# execstops
|
# execstops
|
||||||
# - /usr/bin/stopcmd1
|
# - /usr/bin/stopcmd1
|
||||||
# - /usr/bin/stopcmd2
|
# - /usr/bin/stopcmd2
|
||||||
|
# sockets:
|
||||||
|
# - socket_name: SocketServiceZ
|
||||||
|
# after_targets:
|
||||||
|
# - ServiceZ.socket
|
||||||
|
# before_targets:
|
||||||
|
# - ServiceY.service
|
||||||
|
# bind_targets:
|
||||||
|
# - ServiceZ.socket
|
||||||
|
# enabled: true
|
||||||
|
# state: started
|
||||||
|
# options:
|
||||||
|
# SocketMode: 0600
|
||||||
|
# ListenStream: /var/run/ServiceZ
|
||||||
#
|
#
|
||||||
# - service_name: TimerServiceW
|
# - service_name: TimerServiceW
|
||||||
# config_overrides: {} # This is used to add in arbitratry unit file options
|
# config_overrides: {} # This is used to add in arbitratry unit file options
|
||||||
|
4
releasenotes/notes/systemd_socket-288b17560a578814.yaml
Normal file
4
releasenotes/notes/systemd_socket-288b17560a578814.yaml
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
---
|
||||||
|
features:
|
||||||
|
- |
|
||||||
|
Added sockets key to configure systemd-sockets for the systemd service.
|
@ -107,11 +107,25 @@
|
|||||||
tags:
|
tags:
|
||||||
- systemd-service
|
- systemd-service
|
||||||
|
|
||||||
|
- name: Place the systemd socket
|
||||||
|
template:
|
||||||
|
src: "systemd-socket.j2"
|
||||||
|
dest: "/etc/systemd/system/{{ item.1.socket_name | replace(' ', '_') }}.socket"
|
||||||
|
mode: "0644"
|
||||||
|
owner: "root"
|
||||||
|
group: "root"
|
||||||
|
loop: "{{ systemd_services | subelements('sockets', skip_missing=True) }}"
|
||||||
|
notify:
|
||||||
|
- systemd service changed
|
||||||
|
register: systemd_socket
|
||||||
|
tags:
|
||||||
|
- systemd-service
|
||||||
|
|
||||||
- name: Reload systemd on unit change
|
- name: Reload systemd on unit change
|
||||||
systemd:
|
systemd:
|
||||||
daemon_reload: yes
|
daemon_reload: yes
|
||||||
when:
|
when:
|
||||||
- (systemd_services_result is changed) or (systemd_timer_result is changed)
|
- (systemd_services_result is changed) or (systemd_timer_result is changed) or ('true' in systemd_socket.results | map(attribute='changed') | list )
|
||||||
|
|
||||||
- name: Load service
|
- name: Load service
|
||||||
systemd:
|
systemd:
|
||||||
@ -132,3 +146,12 @@
|
|||||||
with_items: "{{ systemd_services }}"
|
with_items: "{{ systemd_services }}"
|
||||||
tags:
|
tags:
|
||||||
- systemd-service
|
- systemd-service
|
||||||
|
|
||||||
|
- name: Load socket
|
||||||
|
systemd:
|
||||||
|
name: "{{ item.socket_name | replace(' ', '_') }}.socket"
|
||||||
|
enabled: "{{ item.enabled | default(systemd_service_enabled) }}"
|
||||||
|
state: "{{ item.state | default(omit) }}"
|
||||||
|
loop: "{{ systemd_services | selectattr('sockets', 'defined') | map(attribute='sockets') | flatten(1) }}"
|
||||||
|
tags:
|
||||||
|
- systemd-service
|
||||||
|
22
templates/systemd-socket.j2
Normal file
22
templates/systemd-socket.j2
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
# {{ ansible_managed }}
|
||||||
|
|
||||||
|
[Unit]
|
||||||
|
Description={{ item.1.socket_name }} socket
|
||||||
|
{% for target in item.1.after_targets | default([]) %}
|
||||||
|
After={{ target }}
|
||||||
|
{% endfor %}
|
||||||
|
{% for target in item.1.before_targets | default([]) %}
|
||||||
|
Before={{ target }}
|
||||||
|
{% endfor %}
|
||||||
|
{% for target in item.1.bind_targets | default([]) %}
|
||||||
|
BindsTo={{ target }}
|
||||||
|
{% endfor %}
|
||||||
|
|
||||||
|
[Socket]
|
||||||
|
Service={{ item.0.service_name | replace(' ', '_') }}.service
|
||||||
|
{% for key, var in item.1.options.items() | default({}) %}
|
||||||
|
{{ key }}={{ var }}
|
||||||
|
{% endfor %}
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=sockets.target
|
Loading…
Reference in New Issue
Block a user