Handlers

main.yml

Synopsis: Main task.

Import handlers.

[handlers/main.yml]

 1---
 2# linux_postinstall handlers
 3
 4- name: Import acpi.yml
 5  ansible.builtin.import_tasks: acpi.yml
 6
 7- name: Import apparmor.yml
 8  ansible.builtin.import_tasks: apparmor.yml
 9
10- name: Import autofs.yml
11  ansible.builtin.import_tasks: autofs.yml
12
13- name: Import bluetooth.yml
14  ansible.builtin.import_tasks: bluetooth.yml
15
16- name: Import chrony.yml
17  ansible.builtin.import_tasks: chrony.yml
18
19- name: Import dnsmasq.yml
20  ansible.builtin.import_tasks: dnsmasq.yml
21
22- name: Import gpg.yml
23  ansible.builtin.import_tasks: gpg.yml
24
25- name: Import gpsd.yml
26  ansible.builtin.import_tasks: gpsd.yml
27
28- name: Import grub.yml
29  ansible.builtin.import_tasks: grub.yml
30
31- name: Import hostname.yml
32  ansible.builtin.import_tasks: hostname.yml
33
34- name: Import initramfs.yml
35  ansible.builtin.import_tasks: initramfs.yml
36
37- name: Import iptables.yml
38  ansible.builtin.import_tasks: iptables.yml
39
40- name: Import libvirtd.yml
41  ansible.builtin.import_tasks: libvirtd.yml
42
43- name: Import messages.yml
44  ansible.builtin.import_tasks: messages.yml
45
46- name: Import netplan.yml
47  ansible.builtin.import_tasks: netplan.yml
48
49- name: Import networkd.yml
50  ansible.builtin.import_tasks: networkd.yml
51
52- name: Import newaliases.yml
53  ansible.builtin.import_tasks: newaliases.yml
54
55- name: Import nfsd.yml
56  ansible.builtin.import_tasks: nfsd.yml
57
58- name: Import postfix.yml
59  ansible.builtin.import_tasks: postfix.yml
60
61- name: Import rc_local.yml
62  ansible.builtin.import_tasks: rc_local.yml
63
64- name: Import resolvconf.yml
65  ansible.builtin.import_tasks: resolvconf.yml
66
67- name: Import smart.yml
68  ansible.builtin.import_tasks: smart.yml
69
70- name: Import sshd.yml
71  ansible.builtin.import_tasks: sshd.yml
72
73- name: Import swap.yml
74  ansible.builtin.import_tasks: swap.yml
75
76- name: Import sysctl.yml
77  ansible.builtin.import_tasks: sysctl.yml
78
79- name: Import systemd.yml
80  ansible.builtin.import_tasks: systemd.yml
81
82- name: Import timesyncd.yml
83  ansible.builtin.import_tasks: timesyncd.yml
84
85- name: Import tlp.yml
86  ansible.builtin.import_tasks: tlp.yml
87
88- name: Import udev.yml
89  ansible.builtin.import_tasks: udev.yml
90
91- name: Import ufw.yml
92  ansible.builtin.import_tasks: ufw.yml
93
94- name: Import wpasupplicant.yml
95  ansible.builtin.import_tasks: wpasupplicant.yml
96
97# EOF

acpi.yml

Synopsis: Configure acpi

Description of the task.

[handlers/acpi.yml]

 1---
 2- name: Reload acpid
 3  listen: reload acpid
 4  ansible.builtin.service:
 5    name: "{{ lp_acpi_service }}"
 6    state: reloaded
 7  when: lp_acpi_enable | bool
 8
 9- name: Restart acpid
10  listen: restart acpid
11  ansible.builtin.service:
12    name: "{{ lp_acpi_service }}"
13    state: restarted
14  when: lp_acpi_enable | bool
15
16# EOF

apparmor.yml

Synopsis: Configure apparmor

Description of the task.

[handlers/apparmor.yml]

 1---
 2- name: Apparmor disable profile
 3  listen: apparmor disable profile
 4  ansible.builtin.command: # noqa: no-changed-when
 5    cmd: >
 6      apparmor_parser -R /etc/apparmor.d/{{ apparmor_item_path.stdout }}
 7
 8- name: Apparmor enforce profile
 9  listen: apparmor enforce profile
10  ansible.builtin.command: # noqa: no-changed-when
11    cmd: >
12      apparmor_parser -r /etc/apparmor.d/{{ apparmor_item_path.stdout }}
13
14# EOF

autofs.yml

Synopsis: Configure autofs

Description of the task.

[handlers/autofs.yml]

 1---
 2- name: Restart autofs
 3  listen: restart autofs
 4  ansible.builtin.service:
 5    name: "{{ lp_autofs_service }}"
 6    state: restarted
 7  when: lp_autofs_enable | bool
 8
 9- name: Reload autofs
10  listen: reload autofs
11  ansible.builtin.service:
12    name: "{{ lp_autofs_service }}"
13    state: reloaded
14  when: lp_autofs_enable | bool
15
16# EOF

bluetooth.yml

Synopsis: Configure bluetooth

Description of the task.

[handlers/bluetooth.yml]

1---
2- name: Restart bluetooth
3  listen: restart bluetooth
4  ansible.builtin.service:
5    name: "{{ lp_bluetooth_service }}"
6    state: restarted
7  when: lp_bluetooth_enable | bool
8
9# EOF

chrony.yml

Synopsis: Configure chrony

Description of the task.

[handlers/chrony.yml]

 1---
 2- name: Start chrony
 3  listen: start chrony
 4  ansible.builtin.service:
 5    name: "{{ lp_chrony_service }}"
 6    state: started
 7
 8- name: Stop chrony
 9  listen: stop chrony
10  ansible.builtin.service:
11    name: "{{ lp_chrony_service }}"
12    state: stopped
13
14- name: Restart chrony
15  listen: restart chrony
16  ansible.builtin.service:
17    name: "{{ lp_chrony_service }}"
18    state: restarted
19  when: lp_chrony_enable | bool
20
21# EOF

dnsmasq.yml

Synopsis: Configure dnsmasq

Description of the task.

[handlers/dnsmasq.yml]

1---
2- name: Restart dnsmasq
3  listen: restart dnsmasq
4  ansible.builtin.command: # noqa: no-changed-when
5    cmd: >
6      /etc/init.d/dnsmasq restart
7  when: lp_dnsmasq_enable | bool
8
9# EOF

gpg.yml

Synopsis: Configure gpg

Description of the task.

[handlers/gpg.yml]

 1---
 2- name: Gpgconf reload
 3  listen: gpgconf reload
 4  ansible.builtin.command: # noqa: no-changed-when
 5    cmd: gpgconf --reload {{ item.item.component }}
 6  loop: "{{ lp_gpg_conf_reg.results | selectattr('changed') }}"
 7  loop_control:
 8    label: "{{ item.item.owner }} {{ item.item.component }}"
 9  become: true
10  become_user: "{{ item.item.owner }}"
11
12# EOF

gpsd.yml

Synopsis: Configure gpsd

Description of the task.

[handlers/gpsd.yml]

1---
2- name: Restart gpsd
3  listen: restart gpsd
4  ansible.builtin.service:
5    name: "{{ lp_gpsd_service }}"
6    state: restarted
7  when: lp_gpsd_enable | bool
8
9# EOF

grub.yml

Synopsis: Configure grub

Description of the task.

[handlers/grub.yml]

1---
2- name: Update grub
3  listen: update grub
4  ansible.builtin.command: # noqa: no-changed-when
5    cmd: >
6      /usr/sbin/update-grub
7
8# EOF

hostname.yml

Synopsis: Configure hostname

Description of the task.

[handlers/hostname.yml]

1---
2- name: Set hostname
3  listen: set hostname
4  ansible.builtin.command: # noqa: no-changed-when
5    cmd: >
6      /sbin/sysctl kernel.hostname={{ hostname }}
7
8# EOF

initramfs.yml

Synopsis: Configure initramfs

Description of the task.

[handlers/initramfs.yml]

 1---
 2- name: Update initramfs
 3  listen:
 4    - update initramfs
 5    - update initrd
 6  ansible.builtin.command: # noqa: no-changed-when
 7    cmd: >
 8      update-initramfs -k all -u
 9
10# EOF

iptables.yml

Synopsis: Configure iptables

Description of the task.

[handlers/iptables.yml]

1---
2- name: Reload iptables
3  listen: reload iptables
4  ansible.builtin.shell: # noqa: no-changed-when
5    cmd: >
6      /sbin/iptables-restore < /etc/network/iptables
7
8# EOF

libvirtd.yml

Synopsis: Configure libvirtd

Description of the task.

[handlers/libvirtd.yml]

 1---
 2- name: Restart libvirtd
 3  listen: restart libvirtd
 4  ansible.builtin.service:
 5    name: "{{ lp_libvirt_libvirtd_service }}"
 6    state: restarted
 7  when: lp_libvirt_libvirtd_enable | bool
 8
 9- name: Reload libvirtd
10  listen: reload libvirtd
11  ansible.builtin.service:
12    name: "{{ lp_libvirt_libvirtd_service }}"
13    state: reloaded
14  when: lp_libvirt_libvirtd_enable | bool
15
16- name: Restart libvirt_guests
17  listen: restart libvirt_guests
18  ansible.builtin.service:
19    name: "{{ lp_libvirt_guests_service }}"
20    state: restarted
21  when: lp_libvirt_libvirtd_enable | bool
22
23- name: Reload libvirt_guests
24  listen: reload libvirt_guests
25  ansible.builtin.service:
26    name: "{{ lp_libvirt_guests_service }}"
27    state: reloaded
28  when: lp_libvirt_libvirtd_enable | bool
29
30# EOF

messages.yml

Synopsis: Configure messages

Description of the task.

[handlers/messages.yml]

 1---
 2# MESSAGES - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 3
 4- name: Logind message reboot
 5  listen: logind message reboot
 6  ansible.builtin.debug:
 7    msg: |
 8      [MESSAGE] Reboot to activate configuration in logind.conf
 9
10# MESSAGES - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
11
12# EOF

netplan.yml

Synopsis: Configure netplan

Description of the task.

[handlers/netplan.yml]

1---
2- name: Netplan apply
3  listen: netplan apply
4  ansible.builtin.command: # noqa: no-changed-when
5    cmd: >
6      netplan apply
7  when: lp_netplan | bool
8
9# EOF

networkd.yml

Synopsis: Configure networkd

Description of the task.

[handlers/networkd.yml]

1---
2- name: Restart networkd
3  listen: restart networkd
4  ansible.builtin.service:
5    name: "{{ lp_networkd_service }}"
6    state: restarted
7  when: lp_networkd_enable | bool
8
9# EOF

newaliases.yml

Synopsis: Configure newaliases

Description of the task.

[handlers/newaliases.yml]

1---
2- name: Newaliases
3  listen: newaliases
4  ansible.builtin.command: # noqa: no-changed-when
5    cmd: >
6      newaliases
7
8# EOF

nfsd.yml

Synopsis: Configure nfsd

Description of the task.

[handlers/nfsd.yml]

1---
2- name: Reload nfsd
3  listen: reload nfsd
4  ansible.builtin.systemd:
5    name: "{{ lp_nfsd_reload_service }}"
6    state: reloaded
7  when: lp_nfsd_enable | bool
8
9# EOF

postfix.yml

Synopsis: Configure postfix

Description of the task.

[handlers/postfix.yml]

 1---
 2- name: Restart postfix
 3  listen: restart postfix
 4  ansible.builtin.service:
 5    name: "{{ lp_postfix_service }}"
 6    state: restarted
 7  when: lp_postfix_enable | bool
 8
 9- name: Reload postfix
10  listen: reload postfix
11  ansible.builtin.service:
12    name: "{{ lp_postfix_service }}"
13    state: reloaded
14  when: lp_postfix_enable | bool
15
16# EOF

rc_local.yml

Synopsis: Configure rc_local

Description of the task.

[handlers/rc_local.yml]

1---
2- name: Restart rc-local
3  listen: restart rc-local
4  ansible.builtin.service:
5    name: "{{ lp_rc_local_service }}"
6    state: restarted
7  when: lp_rc_local_state == 'started'
8
9# EOF

resolvconf.yml

Synopsis: Configure resolvconf

Description of the task.

[handlers/resolvconf.yml]

 1---
 2- name: Restart resolvconf
 3  listen: restart resolvconf
 4  ansible.builtin.service:
 5    name: "{{ lp_resolvconf_service }}"
 6    state: restarted
 7  when: lp_resolvconf_enable | bool
 8
 9- name: Reload resolvconf
10  listen: reload resolvconf
11  ansible.builtin.service:
12    name: "{{ lp_resolvconf_service }}"
13    state: reloaded
14  when: lp_resolvconf_enable | bool
15
16# EOF

smart.yml

Synopsis: Configure smart

Description of the task.

[handlers/smart.yml]

 1---
 2- name: Restart smart
 3  listen: restart smart
 4  ansible.builtin.service:
 5    name: "{{ lp_smart_service }}"
 6    state: restarted
 7  when: lp_smart_enable | bool
 8
 9- name: Reload smart
10  listen: reload smart
11  ansible.builtin.service:
12    name: "{{ lp_smart_service }}"
13    state: reloaded
14  when: lp_smart_enable | bool
15
16# EOF

sshd.yml

Synopsis: Configure sshd

Description of the task.

[handlers/sshd.yml]

 1---
 2- name: Reload sshd
 3  listen: reload sshd
 4  ansible.builtin.service:
 5    name: "{{ lp_sshd_service }}"
 6    state: reloaded
 7  when: lp_sshd_enable | bool
 8
 9- name: Restart sshd
10  listen: restart sshd
11  ansible.builtin.service:
12    name: "{{ lp_sshd_service }}"
13    state: restarted
14  when: lp_sshd_enable | bool
15
16# EOF

swap.yml

Synopsis: Configure swap

Description of the task.

[handlers/swap.yml]

 1---
 2- name: Create and mount swap file
 3  listen: create and mount swap file
 4  ansible.builtin.shell: # noqa: no-changed-when
 5    cmd: >
 6      sh -c
 7      'dd if=/dev/zero of={{ lp_swap_file }} bs=1M count={{ lp_swap_size }} &&
 8      chmod 0600 {{ lp_swap_file }} &&
 9      mkswap {{ lp_swap_file }} &&
10      swapon {{ lp_swap_file }}'
11  when: lp_swap_enable | bool
12
13- name: Change and mount swap file
14  listen: change and mount swap file
15  ansible.builtin.shell: # noqa: no-changed-when
16    cmd: >
17      sh -c
18      'swapoff {{ lp_swap_file }} &&
19      dd if=/dev/zero of={{ lp_swap_file }} bs=1M count={{ lp_swap_size }} &&
20      chmod 0600 {{ lp_swap_file }} &&
21      mkswap {{ lp_swap_file }} &&
22      swapon {{ lp_swap_file }}'
23  when: lp_swap_enable | bool
24
25- name: Remove swap file
26  listen: remove swap file
27  ansible.builtin.shell: # noqa: no-changed-when
28    cmd: >
29      sh -c
30      'swapoff {{ lp_swap_file }} && rm {{ lp_swap_file }}'
31  when: not lp_swap_enable | bool
32
33# EOF

sysctl.yml

Synopsis: Configure sysctl

Description of the task.

[handlers/sysctl.yml]

 1---
 2- name: Load sysctl settings
 3  listen: load sysctl settings
 4  ansible.builtin.command: # noqa: no-changed-when
 5    cmd: >
 6      /sbin/sysctl -p /etc/sysctl.conf
 7
 8- name: Load sysctl system
 9  listen: load sysctl system
10  ansible.builtin.command: # noqa: no-changed-when
11    cmd: >
12      /sbin/sysctl --system
13
14# EOF

systemd.yml

Synopsis: Configure systemd

Description of the task.

[handlers/systemd.yml]

 1---
 2- name: Reexec systemd daemon
 3  listen: reexec systemd daemon
 4  ansible.builtin.systemd_service:
 5    daemon_reexec: true
 6
 7- name: Reload systemd daemon
 8  listen: reload systemd daemon
 9  ansible.builtin.systemd:
10    daemon_reload: true
11
12- name: Reload systemd conf
13  listen: reload systemd conf
14  ansible.builtin.systemd_service:
15    name: "{{ my_service }}"
16    state: "{{ my_restart_or_reload }}"
17    daemon_reload: true
18  loop: "{{ lp_systemd_conf_changes.results }}"
19  loop_control:
20    label: "{{ my_service }}"
21  vars:
22    my_service: "{{ item.item.0.value.reload_service }}"
23    my_state: "{{ my_services[my_service].state | d('started') }}"
24    my_restart_or_reload: "{{ my_services[my_service].restart_or_reload | d('reloaded') }}"
25  when:
26    - my_service != 'noop'
27    - item.changed | bool
28    - my_state == 'started'
29
30- name: Reload systemd units
31  listen: reload systemd units
32  ansible.builtin.systemd_service:
33    name: "{{ my_service }}"
34    state: "{{ my_restart_or_reload }}"
35    daemon_reload: true
36  loop: "{{ lp_systemd_unit_create_changes.results }}"
37  loop_control:
38    label: "{{ my_service }}"
39  vars:
40    my_service: "{{ item.dest | basename }}"
41    my_state: "{{ my_services[my_service].state | d('started') }}"
42    my_restart_or_reload: "{{ my_services[my_service].restart_or_reload | d('reloaded') }}"
43  when:
44    - not (my_service | regex_search('^(.*)@\.\w+$'))
45    - item.changed | bool
46    - my_state == 'started'
47
48# EOF

timesyncd.yml

Synopsis: Configure timesyncd

Description of the task.

[handlers/timesyncd.yml]

 1---
 2- name: Restart timesyncd
 3  listen: restart timesyncd
 4  ansible.builtin.service:
 5    name: "{{ lp_timesyncd_service }}"
 6    state: restarted
 7  when:
 8    - lp_timesyncd_enable | bool
 9    - lp_timesyncd_service_found | bool
10
11# EOF

tlp.yml

Synopsis: Configure tlp

Description of the task.

[handlers/tlp.yml]

 1---
 2- name: Start tlp
 3  listen: start tlp
 4  ansible.builtin.service:
 5    name: "{{ lp_tlp_restart_service }}"
 6    state: started
 7
 8- name: Stop tlp
 9  listen: stop tlp
10  ansible.builtin.service:
11    name: "{{ lp_tlp_restart_service }}"
12    state: stopped
13
14- name: Restart tlp
15  listen: restart tlp
16  ansible.builtin.shell: # noqa: no-changed-when
17    cmd: >
18      sh -c
19      '{{ lp_tlp_path }} init stop &&
20      {{ lp_tlp_path }} init start'
21  when: lp_tlp_enable | bool
22
23# [TODO] "restarted" freeze 20.04
24# systemd: name="{{ lp_tlp_restart_service }}" state=restarted
25
26# EOF

udev.yml

Synopsis: Configure udev

Description of the task.

[handlers/udev.yml]

 1---
 2# Service
 3
 4- name: Reload udev service
 5  listen: reload udev
 6  ansible.builtin.service:
 7    name: "{{ lp_udev_service }}"
 8    state: reloaded
 9  when:
10    - lp_udev_module == 'service'
11    - lp_udev_enable | bool
12
13- name: Restart udev service
14  listen: restart udev
15  ansible.builtin.service:
16    name: "{{ lp_udev_service }}"
17    state: restarted
18  when:
19    - lp_udev_module == 'service'
20    - lp_udev_enable | bool
21
22# Systemd
23
24- name: Reload udev systemd
25  listen: reload udev
26  ansible.builtin.systemd_service:
27    name: "{{ lp_udev_service }}"
28    state: reloaded
29  when:
30    - lp_udev_module == 'systemd'
31    - lp_udev_enable | bool
32
33- name: Restart udev systemd
34  listen: restart udev
35  ansible.builtin.systemd_service:
36    name: "{{ lp_udev_service }}"
37    state: restarted
38  when:
39    - lp_udev_module == 'systemd'
40    - lp_udev_enable | bool
41
42# SysV
43
44- name: Reload udev SysV
45  listen: reload udev
46  ansible.builtin.sysvinit:
47    name: "{{ lp_udev_service }}"
48    state: reloaded
49  when:
50    - lp_udev_module == 'sysvinit'
51    - lp_udev_enable | bool
52
53- name: Restart udev SysV
54  listen: restart udev
55  ansible.builtin.sysvinit:
56    name: "{{ lp_udev_service }}"
57    state: restarted
58  when:
59    - lp_udev_module == 'sysvinit'
60    - lp_udev_enable | bool
61
62# EOF

ufw.yml

Synopsis: Configure ufw

Description of the task.

[handlers/ufw.yml]

 1---
 2- name: Restart ufw
 3  listen: restart ufw
 4  ansible.builtin.service:
 5    name: "{{ lp_ufw_service }}"
 6    state: restarted
 7  when: lp_ufw_enable | bool
 8
 9- name: Reset ufw
10  listen: reset ufw
11  community.general.ufw:
12    state: reset
13
14- name: Reload ufw
15  listen: reload ufw
16  community.general.ufw:
17    state: reloaded
18  when: lp_ufw_enable | bool
19
20# EOF

wpasupplicant.yml

Synopsis: Configure wpasupplicant

Description of the task.

[handlers/wpasupplicant.yml]

 1---
 2- name: Reconfigure wpa_supplicant
 3  listen: reconfigure wpa_supplicant
 4  ansible.builtin.service:
 5    name: "{{ my_service }}"
 6    state: restarted
 7  loop: "{{ lp_wpasupplicant_conf_changes.results }}"
 8  loop_control:
 9    label: "{{ my_service }}"
10  vars:
11    my_service: "{{ lp_wpasupplicant_service_change[item.item.type | d('default')] }}"
12  when:
13    - item.changed | bool
14    - not lp_wpasupplicant_conf_only | bool
15    - item.item.enabled | d(true)
16
17# [TODO] Wait for OK result. Error: 'RECONFIGURE' command timed out.
18# shell: >
19#    [ -S {{ lp_wpasupplicant_conf_ctrl_interface }}/{{ my_dev }} ] &&
20#    wpa_cli -p {{ lp_wpasupplicant_conf_ctrl_interface }}
21#            -i {{ my_dev }} reconfigure ||
22#    exit 0
23
24- name: Reload wpa_supplicant service
25  listen: reload wpa_supplicant service
26  ansible.builtin.service:
27    name: "{{ item.item.0.service }}"
28    state: reloaded
29  loop: "{{ lp_wpasupplicant_service_conf_changes.results }}"
30  loop_control:
31    label: "{{ item.item.0.path }}/{{ item.item.0.service }}"
32  when:
33    - item.changed | bool
34    - not lp_wpasupplicant_service_conf_only|bool
35    - item.item.enabled | d(true)
36
37# [TODO] Restart running wpa_supplicant-*.service services
38# The command below successfully restarts the service in 20.04
39# shell> systemctl restart wpa_supplicant-nl80211@wlan0.service
40
41# EOF