Restart sockets when they are changed

At the moment it's possible only to forcefully restart sockets under
each run, which is not idempotent and may cause interruptions for
service. To avoid that we add a way to restart socket just on config
change with same logic applied as for service.

Change-Id: Ifb6fd9461d7b6a65191b918c0863406cf4de6725
This commit is contained in:
Dmitriy Rabotyagov 2023-01-23 19:15:09 +01:00
parent ed30679416
commit 17f833f27a
3 changed files with 40 additions and 0 deletions

View File

@ -13,6 +13,18 @@
# See the License for the specific language governing permissions and # See the License for the specific language governing permissions and
# limitations under the License. # limitations under the License.
- name: Restart changed sockets
include_tasks: handlers/socket_restart.yml
listen: systemd socket changed
when:
- 'socket_results is changed'
loop: "{{ systemd_socket.results }}"
loop_control:
loop_var: socket_results
tags:
- systemd-service
- name: Restart changed services - name: Restart changed services
include_tasks: handlers/systemd_restart.yml include_tasks: handlers/systemd_restart.yml
listen: systemd service changed listen: systemd service changed

View File

@ -0,0 +1,27 @@
---
# Copyright 2023, Cleura AB.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
- name: "Restart socket"
systemd:
name: "{{ socket.socket_name | replace(' ', '_') }}.socket"
state: restarted
when:
- "'socket_name' in socket"
- socket.restart_changed | default(systemd_service_restart_changed) | bool
- "'state' not in socket"
- socket.enabled | default(systemd_service_enabled) | bool
loop: "{{ socket_results.item }}"
loop_control:
loop_var: socket

View File

@ -131,6 +131,7 @@
group: "root" group: "root"
loop: "{{ systemd_services | subelements('sockets', skip_missing=True) }}" loop: "{{ systemd_services | subelements('sockets', skip_missing=True) }}"
notify: notify:
- systemd socket changed
- systemd service changed - systemd service changed
register: systemd_socket register: systemd_socket
tags: tags: