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
98...

acpi.yml

Synopsis: Handler acpi.

Description of the handler.

[handlers/acpi.yml]

 1---
 2
 3- name: 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  ansible.builtin.service:
11    name: "{{ lp_acpi_service }}"
12    state: restarted
13  when: lp_acpi_enable|bool
14
15# EOF
16...

apparmor.yml

Synopsis: Handler apparmor.

Description of the handler.

[handlers/apparmor.yml]

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

autofs.yml

Synopsis: Handler autofs.

Description of the handler.

[handlers/autofs.yml]

 1---
 2
 3- name: 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  ansible.builtin.service:
11    name: "{{ lp_autofs_service }}"
12    state: reloaded
13  when: lp_autofs_enable|bool
14
15# EOF
16...

bluetooth.yml

Synopsis: Handler bluetooth.

Description of the handler.

[handlers/bluetooth.yml]

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

chrony.yml

Synopsis: Handler chrony.

Description of the handler.

[handlers/chrony.yml]

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

dnsmasq.yml

Synopsis: Handler dnsmasq.

Description of the handler.

[handlers/dnsmasq.yml]

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

gpg.yml

Synopsis: Handler gpg.

Description of the handler.

[handlers/gpg.yml]

 1---
 2
 3- name: gpgconf reload
 4  ansible.builtin.command:
 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
13...

gpsd.yml

Synopsis: Handler gpsd.

Description of the handler.

[handlers/gpsd.yml]

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

grub.yml

Synopsis: Handler grub.

Description of the handler.

[handlers/grub.yml]

1---
2
3- name: update grub
4  ansible.builtin.command:
5    cmd: >
6      /usr/sbin/update-grub
7
8# EOF
9...

hostname.yml

Synopsis: Handler hostname.

Description of the handler.

[handlers/hostname.yml]

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

initramfs.yml

Synopsis: Handler initramfs.

Description of the handler.

[handlers/initramfs.yml]

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

iptables.yml

Synopsis: Handler iptables.

Description of the handler.

[handlers/iptables.yml]

1---
2
3- name: reload iptables
4  ansible.builtin.shell:
5    cmd: >
6      /sbin/iptables-restore < /etc/network/iptables
7
8# EOF
9...

libvirtd.yml

Synopsis: Handler libvirtd.

Description of the handler.

[handlers/libvirtd.yml]

 1---
 2
 3- name: 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  ansible.builtin.service:
11    name: "{{ lp_libvirt_libvirtd_service }}"
12    state: reloaded
13  when: lp_libvirt_libvirtd_enable|bool
14
15- name: restart libvirt_guests
16  ansible.builtin.service:
17    name: "{{ lp_libvirt_guests_service }}"
18    state: restarted
19  when: lp_libvirt_libvirtd_enable|bool
20
21- name: reload libvirt_guests
22  ansible.builtin.service:
23    name: "{{ lp_libvirt_guests_service }}"
24    state: reloaded
25  when: lp_libvirt_libvirtd_enable|bool
26
27# EOF
28...

messages.yml

Synopsis: Handler messages.

Description of the handler.

[handlers/messages.yml]

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

netplan.yml

Synopsis: Handler netplan.

Description of the handler.

[handlers/netplan.yml]

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

networkd.yml

Synopsis: Handler networkd.

Description of the handler.

[handlers/networkd.yml]

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

newaliases.yml

Synopsis: Handler newaliases.

Description of the handler.

[handlers/newaliases.yml]

1---
2
3- name: newaliases
4  ansible.builtin.command:
5    cmd: >
6      newaliases
7
8# EOF
9...

nfsd.yml

Synopsis: Handler nfsd.

Description of the handler.

[handlers/nfsd.yml]

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

postfix.yml

Synopsis: Handler postfix.

Description of the handler.

[handlers/postfix.yml]

 1---
 2
 3- name: 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  ansible.builtin.service:
11    name: "{{ lp_postfix_service }}"
12    state: reloaded
13  when: lp_postfix_enable|bool
14
15# EOF
16...

rc_local.yml

Synopsis: Handler rc_local.

Description of the handler.

[handlers/rc_local.yml]

 1---
 2
 3- name: 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
10...

resolvconf.yml

Synopsis: Handler resolvconf.

Description of the handler.

[handlers/resolvconf.yml]

 1---
 2
 3- name: 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  ansible.builtin.service:
11    name: "{{ lp_resolvconf_service }}"
12    state: reloaded
13  when: lp_resolvconf_enable|bool
14
15# EOF
16...

smart.yml

Synopsis: Handler smart.

Description of the handler.

[handlers/smart.yml]

 1---
 2
 3- name: 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  ansible.builtin.service:
11    name: "{{ lp_smart_service }}"
12    state: reloaded
13  when: lp_smart_enable|bool
14
15# EOF
16...

sshd.yml

Synopsis: Handler sshd.

Description of the handler.

[handlers/sshd.yml]

 1---
 2
 3- name: 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  ansible.builtin.service:
11    name: "{{ lp_sshd_service }}"
12    state: restarted
13  when: lp_sshd_enable|bool
14
15# EOF
16...

swap.yml

Synopsis: Handler swap.

Description of the handler.

[handlers/swap.yml]

 1---
 2
 3- name: create and mount swap file
 4  ansible.builtin.shell:
 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  ansible.builtin.shell:
15    cmd: >
16      sh -c
17      'swapoff {{ lp_swap_file }} &&
18      dd if=/dev/zero of={{ lp_swap_file }} bs=1M count={{ lp_swap_size }} &&
19      chmod 0600 {{ lp_swap_file }} &&
20      mkswap {{ lp_swap_file }} &&
21      swapon {{ lp_swap_file }}'
22  when: lp_swap_enable|bool
23
24- name: remove swap file
25  ansible.builtin.shell:
26    cmd: >
27      sh -c
28      'swapoff {{ lp_swap_file }} && rm {{ lp_swap_file }}'
29  when: not lp_swap_enable|bool
30
31# EOF
32...

sysctl.yml

Synopsis: Handler sysctl.

Description of the handler.

[handlers/sysctl.yml]

1---
2
3- name: load sysctl settings
4  ansible.builtin.command:
5    cmd: >
6      /sbin/sysctl -p /etc/sysctl.conf
7
8# EOF
9...

systemd.yml

Synopsis: Handler systemd.

Description of the handler.

[handlers/systemd.yml]

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

timesyncd.yml

Synopsis: Handler timesyncd.

Description of the handler.

[handlers/timesyncd.yml]

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

tlp.yml

Synopsis: Handler tlp.

Description of the handler.

[handlers/tlp.yml]

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

udev.yml

Synopsis: Handler udev.

Description of the handler.

[handlers/udev.yml]

 1---
 2
 3- name: reload udev
 4  ansible.builtin.command:
 5    cmd: >
 6      {{ lp_udev_path }} control --reload-rules
 7  when: lp_udev_enable|bool
 8#  Ubuntu 18.04 error: Failed to reload udev.service: Job type reload
 9#  is not applicable for unit systemd-udevd.service
10#  systemd: name="udev" state="reloaded"
11# Ubuntu 18.04
12# command: "/sbin/udevadm control --reload-rules"
13# Ubuntu 20.04
14# command: "/usr/bin/udevadm control --reload-rules"
15
16- name: restart udev
17  ansible.builtin.service:
18    name: "{{ lp_service_udev }}"
19    state: restarted
20  when: lp_udev_enable|bool
21
22# EOF
23...

ufw.yml

Synopsis: Handler ufw.

Description of the handler.

[handlers/ufw.yml]

 1---
 2
 3- name: 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  community.general.ufw:
11    state: reset
12
13- name: reload ufw
14  community.general.ufw:
15    state: reloaded
16  when: lp_ufw_enable|bool
17
18# EOF
19...

wpasupplicant.yml

Synopsis: Handler wpasupplicant.

Description of the handler.

[handlers/wpasupplicant.yml]

 1---
 2
 3- name: 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_dev: "{{ item.item.dev }}"
12    my_service: "{{ lp_wpasupplicant_service[item.item.type|default('default')] }}"
13  when:
14    - item.changed|bool
15    - not lp_wpasupplicant_conf_only|bool
16    - item.item.enabled|default(true)
17
18# [TODO] Wait for OK result. Error: 'RECONFIGURE' command timed out.
19# shell: >
20#    [ -S {{ lp_wpasupplicant_conf_ctrl_interface }}/{{ item.item.dev }} ] &&
21#    wpa_cli -p {{ lp_wpasupplicant_conf_ctrl_interface }}
22#            -i {{ item.item.dev }} reconfigure ||
23#    exit 0
24
25- name: 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|default(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
42...