git.lirion.de

Of git, get, and gud

aboutsummaryrefslogtreecommitdiffstats
path: root/roles/patch_debian/tasks/main.yaml
blob: b6ab1935dd984e8aa8b3547f4f828d005670b7cc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
---
- name: "Check whether OS is a Debian derivative"
  ansible.builtin.assert:
    that:
      - ansible_distribution_file_variety == 'Debian'
  no_log: true
- name: Update repository cache
  apt:
    update_cache: "yes"
  become: true
- name: Check for upgrades
  shell:
    cmd: apt list --upgradable 2>/dev/null | grep -v ^Listing | wc -l
  # ZWEI GEKREUZTE HÄMMER UND EIN GROSSES W
  register: aue
  # apt will throw an error because it doesn't like piping yet.
  # for our purposes, however, everything has already been sufficiently implemented.
  failed_when: false
  #changed_when: aue.stdout|int > 0
  changed_when: false
- block:
    - name: Check for existence of rkhunter
      stat:
        path: /usr/bin/rkhunter
      register: rkhex
      ignore_errors: true
      no_log: true
      changed_when: false
    #    - rkhex.stat is defined
    #    - rkhex.stat.executable is defined
    #    - rkhex.stat.executable == true
    - name: rkhunter pre-check
      shell: rkhunter -c --sk --rwo --ns
      become: true
      no_log: true
      when:
        - rkhex.stat is defined
        - rkhex.stat.executable is defined
        - rkhex.stat.executable == true
    - name: Clean packages cache
      command: apt clean
      become: true
    - name: Upgrade packages (Debian)
      apt:
        upgrade: dist
      become: true
      # when: aue.stdout|int > 0
    - name: Remove dependencies that are no longer required
      apt:
        autoremove: "yes"
        purge: "yes"
      become: true
    - name: Check for existence of needrestart
      stat:
        path: /usr/sbin/needrestart
      register: nrex
      ignore_errors: "yes"
      no_log: true
      failed_when: false
      changed_when: false
  when: aue.stdout|int > 0
- block:
    - name: Check for outdated kernel
      shell: /usr/sbin/needrestart -pk
      register: kernout
      #changed_when: "kernout.rc|int == 1"
      changed_when: false
      # failed_when necessary to not fail on RC 1 instead of a true failure
      failed_when: kernout.rc > 2
    - name: Check for outdated services
      shell: /usr/sbin/needrestart -pl
      register: svcout
      #changed_when: "svcout.rc|int == 1"
      changed_when: false
      # failed_when necessary to not fail on RC 1 instead of a true failure
      failed_when: svcout.rc > 2
  become: true
  when:
    - nrex.stat is defined
    - nrex.stat.exists == true
    - nrex.stat.executable == true
- name: Clean apt cache
  # ansible's apt module does not have a dedicated action for this yet. So shell it is:
  shell: apt clean
  become: true
  # here, we already listen to "debian updates available" already since we already did a more generic cleanup above (unless narrowed down as well)
- name: rkhunter properties update
  command: rkhunter --propupd --rwo --ns
  become: true
  when:
    - rkhex.stat is defined
    - rkhex.stat.executable is defined
    - rkhex.stat.executable == true
- name: Reboot if required
  # ignore_errors: yes
  reboot:
    reboot_timeout: 300
    pre_reboot_delay: 5
    test_command: uptime
    reboot_command: "/bin/systemctl reboot"
  become: true
  when: ( kernout.rc is defined and kernout.rc > 2 ) or ( svcout.rc is defined and svcout.rc > 2 )