From 8b2ab7753dd1eb334c6f036c8aa229f051c3f99c Mon Sep 17 00:00:00 2001
From: Alexander Dahl <alex@netz39.de>
Date: Sat, 1 Mar 2025 21:21:22 +0100
Subject: [PATCH 01/48] :rotating_light: Fix linter warnings of type
 'name[casing]'

ansible-lint reads like this:

    name[casing]: All names should start with an uppercase letter.

While at it: Some task/handler names were slightly adapted to better
match what should be done.
---
 host-beaker.yml                                 |  4 ++--
 host-platon.yml                                 | 16 ++++++++--------
 host-pottwal.yml                                |  4 ++--
 host-radon.yml                                  |  4 ++--
 roles/apache/handlers/main.yml                  |  2 +-
 roles/apache/tasks/main.yml                     |  4 ++--
 roles/apache_letsencrypt/handlers/main.yml      |  2 +-
 roles/apache_letsencrypt/tasks/main.yml         |  4 ++--
 roles/dd24_dyndns_cron/handlers/main.yml        |  2 +-
 roles/dd24_dyndns_cron/tasks/main.yml           |  2 +-
 roles/desec_dyndns_cron/handlers/main.yml       |  2 +-
 roles/desec_dyndns_cron/tasks/main.yml          |  2 +-
 roles/nfs_host/handlers/main.yml                |  2 +-
 roles/nfs_host/tasks/main.yml                   |  6 +++---
 roles/nginx_https_ingress/handlers/main.yml     |  2 +-
 roles/nginx_https_ingress/tasks/main.yml        |  6 +++---
 roles/setup_http_site_forward/handlers/main.yml |  2 +-
 roles/setup_http_site_forward/tasks/main.yml    |  4 ++--
 roles/setup_http_site_proxy/handlers/main.yml   |  2 +-
 roles/setup_http_site_proxy/tasks/main.yml      |  4 ++--
 setup-ssh.yml                                   |  8 ++++----
 21 files changed, 42 insertions(+), 42 deletions(-)

diff --git a/host-beaker.yml b/host-beaker.yml
index ba571fa..2729426 100644
--- a/host-beaker.yml
+++ b/host-beaker.yml
@@ -9,7 +9,7 @@
 
   tasks:
 
-    - name: enable proxmox gui login for admin users
+    - name: Enable proxmox gui login for admin users
       ansible.builtin.lineinfile:
         path: /etc/pve/user.cfg
         regexp: "^user:{{ item.logname }}@pam"
@@ -18,7 +18,7 @@
         state: present
       loop: "{{ users }}"
 
-    - name: configure proxmox admin group
+    - name: Configure proxmox admin group
       ansible.builtin.lineinfile:
         path: /etc/pve/user.cfg
         regexp: "^group:Admins:"
diff --git a/host-platon.yml b/host-platon.yml
index b16bb93..9a54416 100644
--- a/host-platon.yml
+++ b/host-platon.yml
@@ -63,7 +63,7 @@
         owner: root
         group: root
         mode: '0644'
-      notify: restart mosquitto
+      notify: Restart mosquitto service
 
 
     ### Sesam for SSH access
@@ -245,7 +245,7 @@
         owner: root
         group: root
         mode: "0644"
-      notify: restart rsyslog
+      notify: Restart rsyslog
 
 
     ### Asterisk
@@ -258,7 +258,7 @@
         owner: root
         group: root
         mode: "0644"
-      notify: restart asterisk
+      notify: Restart asterisk
 
     - name: Set up extensions for asterisk
       # This uses the variables gatekeeper_user and door_open_command
@@ -268,14 +268,14 @@
         owner: root
         group: root
         mode: "0644"
-      notify: restart asterisk
+      notify: Restart asterisk
 
     - name: Ensure asterisk is in the right groups
       ansible.builtin.user:
         name: asterisk
         groups: audio,i2c,gpio
         append: yes
-      notify: restart asterisk
+      notify: Restart asterisk
 
     # Asterisk now executes shell scripts with reduced privileges, so we need to
     # use sudo for I2C access.
@@ -304,19 +304,19 @@
 
 
   handlers:
-    - name: restart mosquitto
+    - name: Restart mosquitto service
       service:
         name: mosquitto
         state: restarted
         enabled: yes
 
-    - name: restart rsyslog
+    - name: Restart rsyslog
       service:
         name: rsyslog
         state: restarted
         enabled: yes
 
-    - name: restart asterisk
+    - name: Restart asterisk
       service:
         name: asterisk
         state: restarted
diff --git a/host-pottwal.yml b/host-pottwal.yml
index ed32054..4f50ab5 100644
--- a/host-pottwal.yml
+++ b/host-pottwal.yml
@@ -642,7 +642,7 @@
         src: templates/pottwal/renovate-cron.j2
         dest: /etc/cron.hourly/renovate-bot
         mode: "0700"
-      notify: reload cron
+      notify: Reload cron
       tags:
         - renovate
 
@@ -658,7 +658,7 @@
         name: apache2
         state: restarted
 
-    - name: reload cron
+    - name: Reload cron
       ansible.builtin.shell:
         cmd: service cron reload
     # Use the shell call because the task sometimes has problems finding the service state
diff --git a/host-radon.yml b/host-radon.yml
index 4fd6c4f..92131c2 100644
--- a/host-radon.yml
+++ b/host-radon.yml
@@ -53,7 +53,7 @@
         src: "templates/mosquitto.conf.j2"
         dest: "{{ mosquitto_data }}/config/mosquitto.conf"
         mode: 0644
-      notify: restart mosquitto
+      notify: Restart mosquitto container
       tags:
         - mosquitto
 
@@ -226,7 +226,7 @@
         - grafana-screenshot
 
   handlers:
-    - name: restart mosquitto
+    - name: Restart mosquitto container
       docker_container:
         name: mosquitto
         state: started
diff --git a/roles/apache/handlers/main.yml b/roles/apache/handlers/main.yml
index e307af9..3f91a65 100644
--- a/roles/apache/handlers/main.yml
+++ b/roles/apache/handlers/main.yml
@@ -1,6 +1,6 @@
 # Handlers for role apache
 ---
-- name: restart apache2
+- name: Restart apache2
   service:
     name: apache2
     state: restarted
diff --git a/roles/apache/tasks/main.yml b/roles/apache/tasks/main.yml
index 6bfa4da..9e7a82c 100644
--- a/roles/apache/tasks/main.yml
+++ b/roles/apache/tasks/main.yml
@@ -23,7 +23,7 @@
     mode: "0644"
     owner: root
     group: root
-  notify: restart apache2
+  notify: Restart apache2
 
 - name: Add symlink to enable configuration
   ansible.builtin.file:
@@ -32,4 +32,4 @@
     state: link
     owner: root
     group: root
-  notify: restart apache2
+  notify: Restart apache2
diff --git a/roles/apache_letsencrypt/handlers/main.yml b/roles/apache_letsencrypt/handlers/main.yml
index abf4ea1..a3c935a 100644
--- a/roles/apache_letsencrypt/handlers/main.yml
+++ b/roles/apache_letsencrypt/handlers/main.yml
@@ -1,6 +1,6 @@
 # Handlers for role apache_letsencrypt
 ---
-- name: restart apache2
+- name: Restart apache2
   service:
     name: apache2
     state: restarted
diff --git a/roles/apache_letsencrypt/tasks/main.yml b/roles/apache_letsencrypt/tasks/main.yml
index 6acb952..1294f2d 100644
--- a/roles/apache_letsencrypt/tasks/main.yml
+++ b/roles/apache_letsencrypt/tasks/main.yml
@@ -7,7 +7,7 @@
     mode: "0644"
     owner: root
     group: root
-  notify: restart apache2
+  notify: Restart apache2
 
 - name: Add symlink to enable configuration
   ansible.builtin.file:
@@ -17,4 +17,4 @@
     mode: "0644"
     owner: root
     group: root
-  notify: restart apache2
+  notify: Restart apache2
diff --git a/roles/dd24_dyndns_cron/handlers/main.yml b/roles/dd24_dyndns_cron/handlers/main.yml
index 49c802c..10ded8f 100644
--- a/roles/dd24_dyndns_cron/handlers/main.yml
+++ b/roles/dd24_dyndns_cron/handlers/main.yml
@@ -1,6 +1,6 @@
 # handlers file for cron-dd24-dyndns
 ---
-- name: reload cron
+- name: Reload cron
   ansible.builtin.shell:
     cmd: service cron reload
     warn: no
diff --git a/roles/dd24_dyndns_cron/tasks/main.yml b/roles/dd24_dyndns_cron/tasks/main.yml
index 5060260..7187267 100644
--- a/roles/dd24_dyndns_cron/tasks/main.yml
+++ b/roles/dd24_dyndns_cron/tasks/main.yml
@@ -13,6 +13,6 @@
     owner: root
     group: root
     mode: "0644"
-  notify: reload cron
+  notify: Reload cron
   # There is ansible.builtin.cron, but this makes configuration much
   # more complicated, so we stick to the template.
diff --git a/roles/desec_dyndns_cron/handlers/main.yml b/roles/desec_dyndns_cron/handlers/main.yml
index 76bb1a9..8017c9d 100644
--- a/roles/desec_dyndns_cron/handlers/main.yml
+++ b/roles/desec_dyndns_cron/handlers/main.yml
@@ -1,6 +1,6 @@
 # handlers file for desec_dyndns_cron
 ---
-- name: reload cron
+- name: Reload cron
   ansible.builtin.shell:
     cmd: service cron reload
     warn: no
diff --git a/roles/desec_dyndns_cron/tasks/main.yml b/roles/desec_dyndns_cron/tasks/main.yml
index d389fb7..921b8f6 100644
--- a/roles/desec_dyndns_cron/tasks/main.yml
+++ b/roles/desec_dyndns_cron/tasks/main.yml
@@ -13,6 +13,6 @@
     owner: root
     group: root
     mode: "0644"
-  notify: reload cron
+  notify: Reload cron
   # There is ansible.builtin.cron, but this makes configuration much
   # more complicated, so we stick to the template.
diff --git a/roles/nfs_host/handlers/main.yml b/roles/nfs_host/handlers/main.yml
index 4cdcec5..c2a634d 100644
--- a/roles/nfs_host/handlers/main.yml
+++ b/roles/nfs_host/handlers/main.yml
@@ -1,3 +1,3 @@
 ---
-- name: reload nfs
+- name: Reload nfs
   command: 'exportfs -ra'
diff --git a/roles/nfs_host/tasks/main.yml b/roles/nfs_host/tasks/main.yml
index a6423ff..4ad14c0 100644
--- a/roles/nfs_host/tasks/main.yml
+++ b/roles/nfs_host/tasks/main.yml
@@ -14,7 +14,7 @@
     state: present
     fs_type: ext4
 
-- name: ensure nfs mountpoints exist
+- name: Ensure nfs mountpoints exist
   ansible.builtin.file:
     path: "{{ item.directory }}"
     state: directory
@@ -30,11 +30,11 @@
     fstype: ext4
     state: present
 
-- name: template /etc/exports
+- name: Put /etc/exports in place from template
   ansible.builtin.template:
     src: templates/exports.j2
     dest: "/etc/exports"
-  notify: reload nfs
+  notify: Reload nfs
 
 - name: Ensure nfs is running.
   ansible.builtin.service: "name=nfs-kernel-server state=started enabled=yes"
diff --git a/roles/nginx_https_ingress/handlers/main.yml b/roles/nginx_https_ingress/handlers/main.yml
index 53aebbb..66bf5d2 100644
--- a/roles/nginx_https_ingress/handlers/main.yml
+++ b/roles/nginx_https_ingress/handlers/main.yml
@@ -1,6 +1,6 @@
 # Handlers für nginx-https-proxy
 ---
-- name: restart nginx
+- name: Restart nginx
   service:
     name: nginx
     state: restarted
diff --git a/roles/nginx_https_ingress/tasks/main.yml b/roles/nginx_https_ingress/tasks/main.yml
index b922472..0eeed5f 100644
--- a/roles/nginx_https_ingress/tasks/main.yml
+++ b/roles/nginx_https_ingress/tasks/main.yml
@@ -56,7 +56,7 @@
     owner: root
     group: root
     mode: '0644'
-  notify: restart nginx
+  notify: Restart nginx
 
 - name: Create directory for dehydrated forwardings
   ansible.builtin.file:
@@ -74,7 +74,7 @@
     group: root
     mode: '0644'
   loop: "{{ ingress }}"
-  notify: restart nginx
+  notify: Restart nginx
 
 - name: Setup nginx configuration
   # Note the order here: The nginx configuration _needs_ he dehydrated-hosts
@@ -86,4 +86,4 @@
     owner: root
     group: root
     mode: '0644'
-  notify: restart nginx
+  notify: Restart nginx
diff --git a/roles/setup_http_site_forward/handlers/main.yml b/roles/setup_http_site_forward/handlers/main.yml
index 670471f..db1118f 100644
--- a/roles/setup_http_site_forward/handlers/main.yml
+++ b/roles/setup_http_site_forward/handlers/main.yml
@@ -1,5 +1,5 @@
 ---
-- name: restart apache2
+- name: Restart apache2
   service:
     name: apache2
     state: restarted
diff --git a/roles/setup_http_site_forward/tasks/main.yml b/roles/setup_http_site_forward/tasks/main.yml
index cac1779..ca31f22 100644
--- a/roles/setup_http_site_forward/tasks/main.yml
+++ b/roles/setup_http_site_forward/tasks/main.yml
@@ -3,10 +3,10 @@
   template:
     src: templates/apache-docker-forward-site.j2
     dest: /etc/apache2/sites-available/{{ site_name }}.conf
-  notify: restart apache2
+  notify: Restart apache2
 
 - name: Activate Apache2 site
   command: a2ensite {{ site_name }}
   args:
     creates: /etc/apache2/sites-enabled/{{ site_name }}.conf
-  notify: restart apache2
+  notify: Restart apache2
diff --git a/roles/setup_http_site_proxy/handlers/main.yml b/roles/setup_http_site_proxy/handlers/main.yml
index 670471f..db1118f 100644
--- a/roles/setup_http_site_proxy/handlers/main.yml
+++ b/roles/setup_http_site_proxy/handlers/main.yml
@@ -1,5 +1,5 @@
 ---
-- name: restart apache2
+- name: Restart apache2
   service:
     name: apache2
     state: restarted
diff --git a/roles/setup_http_site_proxy/tasks/main.yml b/roles/setup_http_site_proxy/tasks/main.yml
index c1f52d2..f644791 100644
--- a/roles/setup_http_site_proxy/tasks/main.yml
+++ b/roles/setup_http_site_proxy/tasks/main.yml
@@ -4,10 +4,10 @@
     src: templates/apache-docker-proxy-site.j2
     dest: /etc/apache2/sites-available/{{ site_name }}.conf
     mode: "0644"
-  notify: restart apache2
+  notify: Restart apache2
 
 - name: Activate Apache2 site
   command: a2ensite {{ site_name }}
   args:
     creates: /etc/apache2/sites-enabled/{{ site_name }}.conf
-  notify: restart apache2
+  notify: Restart apache2
diff --git a/setup-ssh.yml b/setup-ssh.yml
index e5297a3..8494297 100644
--- a/setup-ssh.yml
+++ b/setup-ssh.yml
@@ -1,21 +1,21 @@
 ---
-- name: configure local ssh to access n39 hosts
+- name: Configure local ssh to access n39 hosts
   hosts: localhost
 
   tasks:
-    - name: ensure {{ lookup('env', 'HOME') }}/.ssh/config.d/ dir is present
+    - name: Ensure {{ lookup('env', 'HOME') }}/.ssh/config.d/ dir is present
       ansible.builtin.file:
         path: "{{ lookup('env', 'HOME') }}/.ssh/config.d/"
         state: directory
       delegate_to: localhost
 
-    - name: template ssh config for access to internal systems
+    - name: Put ssh config for access to n39 internal systems in place
       ansible.builtin.template:
         src: templates/ssh_config.j2
         dest: "{{ lookup('env', 'HOME') }}/.ssh/config.d/n39_config"
       delegate_to: localhost
 
-    - name: ensure that n39 access config is included
+    - name: Ensure that n39 access config is included
       ansible.builtin.lineinfile:
         path: ~/.ssh/config
         insertbefore: BOF

From e3d2e8a31b3ced4c0570a233f76c4f447ff4773e Mon Sep 17 00:00:00 2001
From: Alexander Dahl <alex@netz39.de>
Date: Sat, 1 Mar 2025 22:09:10 +0100
Subject: [PATCH 02/48] :rotating_light: Fix linter warning of type
 'name[template]'

This warning:

    name[template]: Jinja templates should only be at the end of 'name'
    setup-ssh.yml:6 Task/Handler: Ensure {{ lookup('env', 'HOME') }}/.ssh/config.d/ dir is present

Reason for that warning is thin.  Using the actual home dir here adds
not much value, so keep it symbolic.

Link: https://ansible.readthedocs.io/projects/lint/rules/name/
---
 setup-ssh.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/setup-ssh.yml b/setup-ssh.yml
index 8494297..58fcbcd 100644
--- a/setup-ssh.yml
+++ b/setup-ssh.yml
@@ -3,7 +3,7 @@
   hosts: localhost
 
   tasks:
-    - name: Ensure {{ lookup('env', 'HOME') }}/.ssh/config.d/ dir is present
+    - name: Ensure $HOME/.ssh/config.d/ dir is present
       ansible.builtin.file:
         path: "{{ lookup('env', 'HOME') }}/.ssh/config.d/"
         state: directory

From bc43af38d95bd1814d9e5fb095e031f890361505 Mon Sep 17 00:00:00 2001
From: Alexander Dahl <alex@netz39.de>
Date: Sun, 2 Mar 2025 09:22:05 +0100
Subject: [PATCH 03/48] :rotating_light: Add names to plays to fix name[play]
 linter warnings

Adds basic descriptions on what those host are supposed to do.
---
 group-all.yml         | 5 ++---
 group-docker_host.yml | 6 ++++--
 group-k3s.yml         | 3 ++-
 group-proxmox.yml     | 3 ++-
 host-beaker.yml       | 3 ++-
 host-hobbes.yml       | 3 ++-
 host-holmium.yml      | 3 ++-
 host-krypton.yml      | 3 ++-
 host-oganesson.yml    | 3 ++-
 host-platon.yml       | 3 ++-
 host-plumbum.yml      | 3 ++-
 host-pottwal.yml      | 3 ++-
 host-radon.yml        | 3 ++-
 host-tau.yml          | 3 ++-
 host-unicorn.yml      | 3 ++-
 host-wittgenstein.yml | 3 ++-
 16 files changed, 34 insertions(+), 19 deletions(-)

diff --git a/group-all.yml b/group-all.yml
index 2d95128..b99f764 100644
--- a/group-all.yml
+++ b/group-all.yml
@@ -1,7 +1,6 @@
 ---
-# tasks for all hosts
-
-- hosts: all
+- name: Tasks for all hosts
+  hosts: all
   become: true
 
   vars:
diff --git a/group-docker_host.yml b/group-docker_host.yml
index 08cfb2c..345f007 100644
--- a/group-docker_host.yml
+++ b/group-docker_host.yml
@@ -1,11 +1,13 @@
 ---
-- hosts: docker_host
+- name: Tasks for docker hosts
+  hosts: docker_host
   become: true
 
   roles:
     - role: netz39.host_docker
 
-- hosts: docker_host:&location_space
+- name: Tasks for docker hosts at location space
+  hosts: docker_host:&location_space
   become: true
 
   roles:
diff --git a/group-k3s.yml b/group-k3s.yml
index 22c521d..96917bf 100644
--- a/group-k3s.yml
+++ b/group-k3s.yml
@@ -1,5 +1,6 @@
 ---
-- hosts: k3s
+- name: Tasks for kubernetes hosts
+  hosts: k3s
   become: true
 
   tasks:
diff --git a/group-proxmox.yml b/group-proxmox.yml
index 6ec32bb..d95a857 100644
--- a/group-proxmox.yml
+++ b/group-proxmox.yml
@@ -1,5 +1,6 @@
 ---
-- hosts: proxmox
+- name: Tasks for virtual machines on proxmox host
+  hosts: proxmox
   become: true
 
   tasks:
diff --git a/host-beaker.yml b/host-beaker.yml
index 2729426..4eb5817 100644
--- a/host-beaker.yml
+++ b/host-beaker.yml
@@ -1,5 +1,6 @@
 ---
-- hosts: beaker.n39.eu
+- name: Setup things on host 'beaker' (proxmox server im space)
+  hosts: beaker.n39.eu
   become: true
 
   vars:
diff --git a/host-hobbes.yml b/host-hobbes.yml
index af2ec88..618d07f 100644
--- a/host-hobbes.yml
+++ b/host-hobbes.yml
@@ -1,5 +1,6 @@
 ---
-- hosts: hobbes.n39.eu
+- name: Setup things on host 'hobbes' (raspberry pi for kiosk screen)
+  hosts: hobbes.n39.eu
   become: true
 
   vars:
diff --git a/host-holmium.yml b/host-holmium.yml
index 006f314..948f705 100644
--- a/host-holmium.yml
+++ b/host-holmium.yml
@@ -1,5 +1,6 @@
 ---
-- hosts: holmium.n39.eu
+- name: Setup things on host 'holmium' (http ingress vm)
+  hosts: holmium.n39.eu
   become: true
 
   vars:
diff --git a/host-krypton.yml b/host-krypton.yml
index e9119ca..8f0df64 100644
--- a/host-krypton.yml
+++ b/host-krypton.yml
@@ -1,5 +1,6 @@
 ---
-- hosts: krypton.n39.eu
+- name: Setup things on host 'krypton' (ldap vm)
+  hosts: krypton.n39.eu
   become: true
 
   vars:
diff --git a/host-oganesson.yml b/host-oganesson.yml
index ed2e5a0..a4cc596 100644
--- a/host-oganesson.yml
+++ b/host-oganesson.yml
@@ -1,5 +1,6 @@
 ---
-- hosts: oganesson.n39.eu
+- name: Setup things on host 'oganesson' (ssh jump host vm)
+  hosts: oganesson.n39.eu
   become: true
 
   vars:
diff --git a/host-platon.yml b/host-platon.yml
index 9a54416..fa03f70 100644
--- a/host-platon.yml
+++ b/host-platon.yml
@@ -1,5 +1,6 @@
 ---
-- hosts: platon.n39.eu
+- name: Setup things on host 'platon' (raspberry pi for entrance door)
+  hosts: platon.n39.eu
   become: true
   vars:
     ansible_python_interpreter: /usr/bin/python3
diff --git a/host-plumbum.yml b/host-plumbum.yml
index e0c3433..19875f6 100644
--- a/host-plumbum.yml
+++ b/host-plumbum.yml
@@ -1,5 +1,6 @@
 ---
-- hosts: plumbum.n39.eu
+- name: Setup things on host 'plumbum' (nfs server)
+  hosts: plumbum.n39.eu
   become: true
 
   roles:
diff --git a/host-pottwal.yml b/host-pottwal.yml
index 4f50ab5..2f52a77 100644
--- a/host-pottwal.yml
+++ b/host-pottwal.yml
@@ -1,5 +1,6 @@
 ---
-- hosts: pottwal.n39.eu
+- name: Setup things on host 'pottwal' (the big docker container host)
+  hosts: pottwal.n39.eu
   become: true
 
   roles:
diff --git a/host-radon.yml b/host-radon.yml
index 92131c2..8b2d78d 100644
--- a/host-radon.yml
+++ b/host-radon.yml
@@ -1,5 +1,6 @@
 ---
-- hosts: radon.n39.eu
+- name: Setup things on host 'radon' (services for space automation)
+  hosts: radon.n39.eu
   become: true
 
   vars:
diff --git a/host-tau.yml b/host-tau.yml
index 64c7c56..5281c54 100644
--- a/host-tau.yml
+++ b/host-tau.yml
@@ -1,5 +1,6 @@
 ---
-- hosts: tau.netz39.de
+- name: Setup things on host 'tau' (vserver for wiki etc.)
+  hosts: tau.netz39.de
   become: true
 
   vars:
diff --git a/host-unicorn.yml b/host-unicorn.yml
index a6fe8d5..362b119 100644
--- a/host-unicorn.yml
+++ b/host-unicorn.yml
@@ -1,6 +1,7 @@
 ---
 # this is for a dedicated vm just hosting the unifi controller.
-- hosts: unicorn.n39.eu
+- name: Setup things on host 'unicorn' (vm for ubiquiti unifi controller)
+  hosts: unicorn.n39.eu
   become: true
   vars:
     ansible_python_interpreter: /usr/bin/python3
diff --git a/host-wittgenstein.yml b/host-wittgenstein.yml
index 1676da0..a67c2c3 100644
--- a/host-wittgenstein.yml
+++ b/host-wittgenstein.yml
@@ -1,5 +1,6 @@
 ---
-- hosts: wittgenstein.n39.eu
+- name: Setup things on host 'wittgenstein' (raspberry pi for ampel and spaceapi)
+  hosts: wittgenstein.n39.eu
   become: true
 
   roles:

From eef2d8b4fb62888eedaef71c74a80bdb880f3e53 Mon Sep 17 00:00:00 2001
From: Renovate Bot <accounts+renovatebot@netz39.de>
Date: Wed, 5 Mar 2025 00:18:07 +0000
Subject: [PATCH 04/48] Update mrtux/grafana-screenshot Docker tag to v0.1.3

---
 host-radon.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/host-radon.yml b/host-radon.yml
index 4fd6c4f..80bb665 100644
--- a/host-radon.yml
+++ b/host-radon.yml
@@ -212,7 +212,7 @@
     - name: Setup docker container for Grafana Screenshots
       docker_container:
         name: grafana-screenshot
-        image: mrtux/grafana-screenshot:0.1.1
+        image: mrtux/grafana-screenshot:0.1.3
         pull: true
         restart_policy: unless-stopped
         detach: yes

From 32bcc7e70b112873fd303e1e561f9a501a246d8e Mon Sep 17 00:00:00 2001
From: Renovate Bot <accounts+renovatebot@netz39.de>
Date: Wed, 5 Mar 2025 10:18:01 +0000
Subject: [PATCH 05/48] Update dependency netz39.host_docker to v0.5.0

---
 requirements.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/requirements.yml b/requirements.yml
index ab7caae..d6dd452 100644
--- a/requirements.yml
+++ b/requirements.yml
@@ -18,7 +18,7 @@ roles:
     version: v0.2.1
   - name: netz39.host_docker
     src: git+https://github.com/netz39/ansible-role-host-docker.git
-    version: v0.4.0
+    version: v0.5.0
 
 collections:
   - name: community.grafana

From dc6943354fcc3d38d1eeb83d62be37ac06b5e054 Mon Sep 17 00:00:00 2001
From: Stefan Haun <tux@netz39.de>
Date: Wed, 5 Mar 2025 12:00:46 +0100
Subject: [PATCH 06/48] Adjust variable docker_image_prune to change in
 netz39.host_docker 0.5.0

---
 group_vars/docker_host/vars.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/group_vars/docker_host/vars.yml b/group_vars/docker_host/vars.yml
index 5be6933..0a27306 100644
--- a/group_vars/docker_host/vars.yml
+++ b/group_vars/docker_host/vars.yml
@@ -1,3 +1,3 @@
 ---
 docker_data_root: "/srv/docker"
-docker_cron_image_prune: true
+docker_image_prune: true

From 289ff674f947f3ce6ba8065521bedc8db94d7b3d Mon Sep 17 00:00:00 2001
From: Stefan Haun <tux@netz39.de>
Date: Wed, 5 Mar 2025 12:15:22 +0100
Subject: [PATCH 07/48] Limit telegraf role to hosts with supporting arch

Temporary fix for https://github.com/LeSpocky/ansible-role-telegraf-docker-in-docker/issues/17
---
 group-docker_host.yml | 1 +
 1 file changed, 1 insertion(+)

diff --git a/group-docker_host.yml b/group-docker_host.yml
index 08cfb2c..c113c11 100644
--- a/group-docker_host.yml
+++ b/group-docker_host.yml
@@ -10,6 +10,7 @@
 
   roles:
     - role: lespocky.telegraf_docker_in_docker
+      when: (ansible_architecture == "x86_64")
       vars:
         tdid_conf_dir: "/etc/telegraf"
         tdid_influxdb_org: "{{ influxdb_org }}"

From fca9c9ea3b86942fcb538eda27a10670f306e9ee Mon Sep 17 00:00:00 2001
From: Stefan Haun <tux@netz39.de>
Date: Wed, 5 Mar 2025 12:16:25 +0100
Subject: [PATCH 08/48] Add wittgenstein to docker group

---
 host-wittgenstein.yml | 4 ----
 inventory.yml         | 1 +
 2 files changed, 1 insertion(+), 4 deletions(-)

diff --git a/host-wittgenstein.yml b/host-wittgenstein.yml
index 1676da0..0ed1217 100644
--- a/host-wittgenstein.yml
+++ b/host-wittgenstein.yml
@@ -3,10 +3,6 @@
   become: true
 
   roles:
-    - role: netz39.host_docker
-      vars:
-        docker_data_root: "/srv/docker"
-        docker_cron_image_prune: true
     - role: apache
     - role: apache_letsencrypt  # Uses configuration from dehydrated setup
     - role: 24367dfa.dehydrated
diff --git a/inventory.yml b/inventory.yml
index 76a969d..9220b95 100644
--- a/inventory.yml
+++ b/inventory.yml
@@ -30,6 +30,7 @@ all:
         radon.n39.eu:
         tau.netz39.de:
         unicorn.n39.eu:
+        wittgenstein.n39.eu:
     proxmox:
       hosts:
         holmium.n39.eu:

From 856253de981dc7fdf57db5aa9dc48258f9b9e7ac Mon Sep 17 00:00:00 2001
From: Renovate Bot <accounts+renovatebot@netz39.de>
Date: Thu, 6 Mar 2025 13:18:03 +0000
Subject: [PATCH 09/48] Update dependency lespocky.telegraf_docker_in_docker to
 v0.2.2

---
 requirements.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/requirements.yml b/requirements.yml
index d6dd452..9569bec 100644
--- a/requirements.yml
+++ b/requirements.yml
@@ -15,7 +15,7 @@ roles:
     src: git+https://github.com/maz3max/ble-keykeeper-role.git
     version: v1.1.0
   - src: lespocky.telegraf_docker_in_docker
-    version: v0.2.1
+    version: v0.2.2
   - name: netz39.host_docker
     src: git+https://github.com/netz39/ansible-role-host-docker.git
     version: v0.5.0

From 7915336812562d41cf5e3a0294337df036557650 Mon Sep 17 00:00:00 2001
From: Renovate Bot <accounts+renovatebot@netz39.de>
Date: Thu, 6 Mar 2025 20:18:10 +0000
Subject: [PATCH 10/48] Update eclipse-mosquitto Docker tag to v2.0.21

---
 host-radon.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/host-radon.yml b/host-radon.yml
index a0a4f9a..25abe17 100644
--- a/host-radon.yml
+++ b/host-radon.yml
@@ -8,7 +8,7 @@
 
     data_dir: "/srv/data"
 
-    mosquitto_image: eclipse-mosquitto:2.0.20
+    mosquitto_image: eclipse-mosquitto:2.0.21
     mosquitto_data: "{{ data_dir }}/mosquitto"
 
     nodered_image: nodered/node-red:3.0.1-1-18

From 2b0e31870d0ad68a4970eca56471ac150608a395 Mon Sep 17 00:00:00 2001
From: Alexander Dahl <alex@netz39.de>
Date: Sat, 8 Mar 2025 22:04:04 +0100
Subject: [PATCH 11/48] :rotating_light: roles: users: Fix linter warnings of
 type 'fqcn'

    fqcn[action-core]: Use FQCN for builtin module actions (shell).
    roles/users/handlers/main.yml:2 Use `ansible.builtin.shell` or `ansible.legacy.shell` instead.

    fqcn[action-core]: Use FQCN for builtin module actions (package).
    roles/users/tasks/main.yml:2 Use `ansible.builtin.package` or `ansible.legacy.package` instead.

    fqcn[action-core]: Use FQCN for builtin module actions (lineinfile).
    roles/users/tasks/main.yml:8 Use `ansible.builtin.lineinfile` or `ansible.legacy.lineinfile` instead.

    fqcn[action-core]: Use FQCN for builtin module actions (user).
    roles/users/tasks/main.yml:16 Use `ansible.builtin.user` or `ansible.legacy.user` instead.

    fqcn[action]: Use FQCN for module actions, such `ansible.posix.authorized_key`.
    roles/users/tasks/main.yml:24 Action `authorized_key` is not FQCN.

    fqcn[action-core]: Use FQCN for builtin module actions (user).
    roles/users/tasks/main.yml:34 Use `ansible.builtin.user` or `ansible.legacy.user` instead.

    fqcn[action-core]: Use FQCN for builtin module actions (stat).
    roles/users/tasks/main.yml:42 Use `ansible.builtin.stat` or `ansible.legacy.stat` instead.

    fqcn[action-core]: Use FQCN for builtin module actions (lineinfile).
    roles/users/tasks/main.yml:47 Use `ansible.builtin.lineinfile` or `ansible.legacy.lineinfile` instead.
---
 roles/users/handlers/main.yml |  2 +-
 roles/users/tasks/main.yml    | 14 +++++++-------
 2 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/roles/users/handlers/main.yml b/roles/users/handlers/main.yml
index 372d62a..04184af 100644
--- a/roles/users/handlers/main.yml
+++ b/roles/users/handlers/main.yml
@@ -1,3 +1,3 @@
 ---
 - name: Update aliases
-  shell: which newaliases && newaliases || true
+  ansible.builtin.shell: which newaliases && newaliases || true
diff --git a/roles/users/tasks/main.yml b/roles/users/tasks/main.yml
index 15fa0fc..3291b35 100644
--- a/roles/users/tasks/main.yml
+++ b/roles/users/tasks/main.yml
@@ -1,12 +1,12 @@
 ---
 - name: Ensure sudo is installed
-  package:
+  ansible.builtin.package:
     name:
       - sudo
     state: present
 
 - name: Configure group sudo for sudoers without password
-  lineinfile:
+  ansible.builtin.lineinfile:
     path: /etc/sudoers
     state: present
     regexp: '^%sudo\s'
@@ -14,7 +14,7 @@
     validate: /usr/sbin/visudo -cf %s
 
 - name: Add users | create users' shell and home dir
-  user:
+  ansible.builtin.user:
     name: "{{ item.logname }}"
     shell: /bin/bash
     createhome: yes
@@ -22,7 +22,7 @@
   with_items: "{{ users }}"
 
 - name: Add authorized keys for user
-  authorized_key:
+  ansible.posix.authorized_key:
     user: "{{ item.0.logname }}"
     key: "{{ item.1 }}"
     state: present
@@ -32,7 +32,7 @@
     - skip_missing: true
 
 - name: Place user in sudo group
-  user:
+  ansible.builtin.user:
     name: "{{ item.logname }}"
     groups: [sudo]
     append: yes
@@ -40,12 +40,12 @@
   with_items: "{{ users }}"
 
 - name: Check if /etc/aliases exists
-  stat:
+  ansible.builtin.stat:
     path: /etc/aliases
   register: aliases
 
 - name: Set system email alias
-  lineinfile:
+  ansible.builtin.lineinfile:
     path: /etc/aliases
     state: present
     regexp: "^{{ item.logname }}:"

From cb50012dd3bf04e7099dea449c13a4d48e4e8a36 Mon Sep 17 00:00:00 2001
From: Alexander Dahl <alex@netz39.de>
Date: Sat, 8 Mar 2025 22:12:00 +0100
Subject: [PATCH 12/48] :rotating_light: roles: setup_http_site_proxy: Fix fqcn
 linter warnings

    fqcn[action-core]: Use FQCN for builtin module actions (service).
    roles/setup_http_site_proxy/handlers/main.yml:2 Use `ansible.builtin.service` or `ansible.legacy.service` instead.

    fqcn[action-core]: Use FQCN for builtin module actions (template).
    roles/setup_http_site_proxy/tasks/main.yml:2 Use `ansible.builtin.template` or `ansible.legacy.template` instead.

    fqcn[action-core]: Use FQCN for builtin module actions (command).
    roles/setup_http_site_proxy/tasks/main.yml:9 Use `ansible.builtin.command` or `ansible.legacy.command` instead.
---
 roles/setup_http_site_proxy/handlers/main.yml | 2 +-
 roles/setup_http_site_proxy/tasks/main.yml    | 4 ++--
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/roles/setup_http_site_proxy/handlers/main.yml b/roles/setup_http_site_proxy/handlers/main.yml
index db1118f..47e5060 100644
--- a/roles/setup_http_site_proxy/handlers/main.yml
+++ b/roles/setup_http_site_proxy/handlers/main.yml
@@ -1,5 +1,5 @@
 ---
 - name: Restart apache2
-  service:
+  ansible.builtin.service:
     name: apache2
     state: restarted
diff --git a/roles/setup_http_site_proxy/tasks/main.yml b/roles/setup_http_site_proxy/tasks/main.yml
index f644791..c50d016 100644
--- a/roles/setup_http_site_proxy/tasks/main.yml
+++ b/roles/setup_http_site_proxy/tasks/main.yml
@@ -1,13 +1,13 @@
 ---
 - name: Add or update Apache2 site
-  template:
+  ansible.builtin.template:
     src: templates/apache-docker-proxy-site.j2
     dest: /etc/apache2/sites-available/{{ site_name }}.conf
     mode: "0644"
   notify: Restart apache2
 
 - name: Activate Apache2 site
-  command: a2ensite {{ site_name }}
+  ansible.builtin.command: a2ensite {{ site_name }}
   args:
     creates: /etc/apache2/sites-enabled/{{ site_name }}.conf
   notify: Restart apache2

From eeb87d21081536877ab77c595e8eb1fe49250924 Mon Sep 17 00:00:00 2001
From: Alexander Dahl <alex@netz39.de>
Date: Sat, 8 Mar 2025 22:17:23 +0100
Subject: [PATCH 13/48] :rotating_light: roles: setup_http_site_forward: Fix
 fqcn linter warnings

    fqcn[action-core]: Use FQCN for builtin module actions (service).
    roles/setup_http_site_forward/handlers/main.yml:2 Use `ansible.builtin.service` or `ansible.legacy.service` instead.

    fqcn[action-core]: Use FQCN for builtin module actions (template).
    roles/setup_http_site_forward/tasks/main.yml:2 Use `ansible.builtin.template` or `ansible.legacy.template` instead.

    fqcn[action-core]: Use FQCN for builtin module actions (command).
    roles/setup_http_site_forward/tasks/main.yml:8 Use `ansible.builtin.command` or `ansible.legacy.command` instead.
---
 roles/setup_http_site_forward/handlers/main.yml | 2 +-
 roles/setup_http_site_forward/tasks/main.yml    | 4 ++--
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/roles/setup_http_site_forward/handlers/main.yml b/roles/setup_http_site_forward/handlers/main.yml
index db1118f..47e5060 100644
--- a/roles/setup_http_site_forward/handlers/main.yml
+++ b/roles/setup_http_site_forward/handlers/main.yml
@@ -1,5 +1,5 @@
 ---
 - name: Restart apache2
-  service:
+  ansible.builtin.service:
     name: apache2
     state: restarted
diff --git a/roles/setup_http_site_forward/tasks/main.yml b/roles/setup_http_site_forward/tasks/main.yml
index ca31f22..7d0dff9 100644
--- a/roles/setup_http_site_forward/tasks/main.yml
+++ b/roles/setup_http_site_forward/tasks/main.yml
@@ -1,12 +1,12 @@
 ---
 - name: Add or update Apache2 site
-  template:
+  ansible.builtin.template:
     src: templates/apache-docker-forward-site.j2
     dest: /etc/apache2/sites-available/{{ site_name }}.conf
   notify: Restart apache2
 
 - name: Activate Apache2 site
-  command: a2ensite {{ site_name }}
+  ansible.builtin.command: a2ensite {{ site_name }}
   args:
     creates: /etc/apache2/sites-enabled/{{ site_name }}.conf
   notify: Restart apache2

From 11e98a4d8e2a2baeee933df01748844e964c5936 Mon Sep 17 00:00:00 2001
From: Alexander Dahl <alex@netz39.de>
Date: Sat, 8 Mar 2025 22:25:28 +0100
Subject: [PATCH 14/48] :rotating_light: roles: nginx_https_ingress: Fix fqcn
 linter warnings

    fqcn[action-core]: Use FQCN for builtin module actions (service).
    roles/nginx_https_ingress/handlers/main.yml:3 Use `ansible.builtin.service` or `ansible.legacy.service` instead.

    fqcn[action-core]: Use FQCN for builtin module actions (apt_key).
    roles/nginx_https_ingress/tasks/main.yml:20 Use `ansible.builtin.apt_key` or `ansible.legacy.apt_key` instead.
---
 roles/nginx_https_ingress/handlers/main.yml | 2 +-
 roles/nginx_https_ingress/tasks/main.yml    | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/roles/nginx_https_ingress/handlers/main.yml b/roles/nginx_https_ingress/handlers/main.yml
index 66bf5d2..2a16ea6 100644
--- a/roles/nginx_https_ingress/handlers/main.yml
+++ b/roles/nginx_https_ingress/handlers/main.yml
@@ -1,7 +1,7 @@
 # Handlers für nginx-https-proxy
 ---
 - name: Restart nginx
-  service:
+  ansible.builtin.service:
     name: nginx
     state: restarted
     enabled: yes
diff --git a/roles/nginx_https_ingress/tasks/main.yml b/roles/nginx_https_ingress/tasks/main.yml
index 0eeed5f..e824733 100644
--- a/roles/nginx_https_ingress/tasks/main.yml
+++ b/roles/nginx_https_ingress/tasks/main.yml
@@ -18,7 +18,7 @@
 # for SSL passthrough.
 
 - name: Add nginx apt-key
-  apt_key:
+  ansible.builtin.apt_key:
     url: https://nginx.org/keys/nginx_signing.key
     state: present
 

From 8b54b363924ae44af17f4e1f596b04ba7b2e69ac Mon Sep 17 00:00:00 2001
From: Alexander Dahl <alex@netz39.de>
Date: Sun, 9 Mar 2025 18:23:17 +0100
Subject: [PATCH 15/48] :rotating_light: roles: cleanuri: Fix fqcn linter
 warnings

    fqcn[action]: Use FQCN for module actions, such `community.docker.docker_container`.
    roles/cleanuri/tasks/main.yml:3 Action `docker_container` is not FQCN.

    fqcn[action-core]: Use FQCN for builtin module actions (include_role).
    roles/cleanuri/tasks/main.yml:17 Use `ansible.builtin.include_role` or `ansible.legacy.include_role` instead.

    fqcn[action]: Use FQCN for module actions, such `community.docker.docker_container`.
    roles/cleanuri/tasks/main.yml:25 Action `docker_container` is not FQCN.

    fqcn[action]: Use FQCN for module actions, such `community.docker.docker_container`.
    roles/cleanuri/tasks/main.yml:44 Action `docker_container` is not FQCN.

    fqcn[action]: Use FQCN for module actions, such `community.docker.docker_container`.
    roles/cleanuri/tasks/main.yml:61 Action `docker_container` is not FQCN.

    fqcn[action-core]: Use FQCN for builtin module actions (include_role).
    roles/cleanuri/tasks/main.yml:78 Use `ansible.builtin.include_role` or `ansible.legacy.include_role` instead.
---
 roles/cleanuri/tasks/main.yml | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/roles/cleanuri/tasks/main.yml b/roles/cleanuri/tasks/main.yml
index 9490a6f..33aeb9b 100644
--- a/roles/cleanuri/tasks/main.yml
+++ b/roles/cleanuri/tasks/main.yml
@@ -1,7 +1,7 @@
 # Tasks for the cleanuri role
 ---
 - name: Ensure CleanURI WebUI is running
-  docker_container:
+  community.docker.docker_container:
     name: cleanuri-webui
     image: "{{ cleanuri_image_webui }}"
     pull: true
@@ -15,7 +15,7 @@
       REACT_APP_API_GATEWAY: "https://{{ cleanuri_api_domain }}"
 
 - name: Setup proxy site for the CleanURI WebUI
-  include_role:
+  ansible.builtin.include_role:
     name: setup_http_site_proxy
   vars:
     site_name: "{{ cleanuri_ui_domain }}"
@@ -23,7 +23,7 @@
 
 
 - name: Ensure CleanURI API Gateway is running
-  docker_container:
+  community.docker.docker_container:
     name: cleanuri-apigateway
     image: "{{ cleanuri_image_apigateway }}"
     pull: true
@@ -42,7 +42,7 @@
       GATEWAY_TASK_RK: "{{ cleanuri_amqp_canonizer }}"
 
 - name: Ensure CleanURI Canonizer is running
-  docker_container:
+  community.docker.docker_container:
     name: cleanuri-canonizer
     image: "{{ cleanuri_image_canonizer }}"
     pull: true
@@ -59,7 +59,7 @@
       EXTRACTOR_TASK_RK: "{{ cleanuri_amqp_retrieval }}"
 
 - name: Ensure CleanURI Extractor is running
-  docker_container:
+  community.docker.docker_container:
     name: cleanuri-extractor
     image: "{{ cleanuri_image_extractor }}"
     pull: true
@@ -76,7 +76,7 @@
 
 
 - name: Setup proxy site the CleanURI API Gateway
-  include_role:
+  ansible.builtin.include_role:
     name: setup_http_site_proxy
   vars:
     site_name: "{{ cleanuri_api_domain }}"

From bec6fc20b753e6fd2698a374b6899d687260f1c2 Mon Sep 17 00:00:00 2001
From: Alexander Dahl <alex@netz39.de>
Date: Sun, 9 Mar 2025 18:32:30 +0100
Subject: [PATCH 16/48] :rotating_light: roles: apache: Fix fqcn linter
 warnings

    fqcn[action-core]: Use FQCN for builtin module actions (service).
    roles/apache/handlers/main.yml:3 Use `ansible.builtin.service` or `ansible.legacy.service` instead.

    fqcn[action-core]: Use FQCN for builtin module actions (apt).
    roles/apache/tasks/main.yml:2 Use `ansible.builtin.apt` or `ansible.legacy.apt` instead.

    fqcn[action]: Use FQCN for module actions, such `community.general.apache2_module`.
    roles/apache/tasks/main.yml:8 Action `apache2_module` is not FQCN.
---
 roles/apache/handlers/main.yml | 2 +-
 roles/apache/tasks/main.yml    | 4 ++--
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/roles/apache/handlers/main.yml b/roles/apache/handlers/main.yml
index 3f91a65..126d33e 100644
--- a/roles/apache/handlers/main.yml
+++ b/roles/apache/handlers/main.yml
@@ -1,6 +1,6 @@
 # Handlers for role apache
 ---
 - name: Restart apache2
-  service:
+  ansible.builtin.service:
     name: apache2
     state: restarted
diff --git a/roles/apache/tasks/main.yml b/roles/apache/tasks/main.yml
index 9e7a82c..67928af 100644
--- a/roles/apache/tasks/main.yml
+++ b/roles/apache/tasks/main.yml
@@ -1,12 +1,12 @@
 ---
 - name: Ensure Apache2 and modules are installed and up to date
-  apt:
+  ansible.builtin.apt:
     name:
       - apache2
     state: present
 
 - name: Ensure necessary modules are enabled
-  apache2_module:
+  community.general.apache2_module:
     name: "{{ item }}"
     state: present
   with_items:

From 23bc6d7b69a0516334eb55901a4333abd7fb265b Mon Sep 17 00:00:00 2001
From: Alexander Dahl <alex@netz39.de>
Date: Sun, 9 Mar 2025 18:19:01 +0100
Subject: [PATCH 17/48] :rotating_light: roles: Fix remaining fqcn linter
 warnings

    fqcn[action-core]: Use FQCN for builtin module actions (service).
    roles/apache_letsencrypt/handlers/main.yml:3 Use `ansible.builtin.service` or `ansible.legacy.service` instead.

    fqcn[action-core]: Use FQCN for builtin module actions (apt).
    roles/dd24_dyndns_cron/tasks/main.yml:2 Use `ansible.builtin.apt` or `ansible.legacy.apt` instead.

    fqcn[action-core]: Use FQCN for builtin module actions (apt).
    roles/desec_dyndns_cron/tasks/main.yml:2 Use `ansible.builtin.apt` or `ansible.legacy.apt` instead.

    fqcn[action-core]: Use FQCN for builtin module actions (command).
    roles/nfs_host/handlers/main.yml:2 Use `ansible.builtin.command` or `ansible.legacy.command` instead.
---
 roles/apache_letsencrypt/handlers/main.yml | 2 +-
 roles/dd24_dyndns_cron/tasks/main.yml      | 2 +-
 roles/desec_dyndns_cron/tasks/main.yml     | 2 +-
 roles/nfs_host/handlers/main.yml           | 2 +-
 4 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/roles/apache_letsencrypt/handlers/main.yml b/roles/apache_letsencrypt/handlers/main.yml
index a3c935a..b2cf41c 100644
--- a/roles/apache_letsencrypt/handlers/main.yml
+++ b/roles/apache_letsencrypt/handlers/main.yml
@@ -1,6 +1,6 @@
 # Handlers for role apache_letsencrypt
 ---
 - name: Restart apache2
-  service:
+  ansible.builtin.service:
     name: apache2
     state: restarted
diff --git a/roles/dd24_dyndns_cron/tasks/main.yml b/roles/dd24_dyndns_cron/tasks/main.yml
index 7187267..da32fbd 100644
--- a/roles/dd24_dyndns_cron/tasks/main.yml
+++ b/roles/dd24_dyndns_cron/tasks/main.yml
@@ -1,6 +1,6 @@
 ---
 - name: Make sure cron and curl are installed
-  apt:
+  ansible.builtin.apt:
     name:
       - cron
       - curl
diff --git a/roles/desec_dyndns_cron/tasks/main.yml b/roles/desec_dyndns_cron/tasks/main.yml
index 921b8f6..eb164d0 100644
--- a/roles/desec_dyndns_cron/tasks/main.yml
+++ b/roles/desec_dyndns_cron/tasks/main.yml
@@ -1,6 +1,6 @@
 ---
 - name: Make sure cron and curl are installed
-  apt:
+  ansible.builtin.apt:
     name:
       - cron
       - curl
diff --git a/roles/nfs_host/handlers/main.yml b/roles/nfs_host/handlers/main.yml
index c2a634d..860a11c 100644
--- a/roles/nfs_host/handlers/main.yml
+++ b/roles/nfs_host/handlers/main.yml
@@ -1,3 +1,3 @@
 ---
 - name: Reload nfs
-  command: 'exportfs -ra'
+  ansible.builtin.command: 'exportfs -ra'

From e61a68de53c9478d84e212c01ddd23da09b41911 Mon Sep 17 00:00:00 2001
From: Alexander Dahl <alex@netz39.de>
Date: Sun, 9 Mar 2025 18:34:45 +0100
Subject: [PATCH 18/48] :rotating_light: host: wittgenstein: Fix fqcn linter
 warnings

    fqcn[action]: Use FQCN for module actions, such `community.docker.docker_container`.
    host-wittgenstein.yml:132 Action `docker_container` is not FQCN.

    fqcn[action]: Use FQCN for module actions, such `community.docker.docker_container`.
    host-wittgenstein.yml:151 Action `docker_container` is not FQCN.
---
 host-wittgenstein.yml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/host-wittgenstein.yml b/host-wittgenstein.yml
index 878ef29..dd9aae6 100644
--- a/host-wittgenstein.yml
+++ b/host-wittgenstein.yml
@@ -130,7 +130,7 @@
 
     ### Space API
     - name: Setup the SpaceAPI Docker container
-      docker_container:
+      community.docker.docker_container:
         name: spaceapi
         image: "{{ spaceapi_image }}"
         pull: true
@@ -149,7 +149,7 @@
         - spaceapi
 
     - name: Setup the Ampel Controller Docker container
-      docker_container:
+      community.docker.docker_container:
         name: ampelcontroller
         image: "{{ ampelcontroller_image }}"
         pull: true

From 5d1ca7ef9f8ee3235ea5182d36539e8b3b57a49b Mon Sep 17 00:00:00 2001
From: Alexander Dahl <alex@netz39.de>
Date: Sun, 9 Mar 2025 18:37:00 +0100
Subject: [PATCH 19/48] :rotating_light: host: unicorn: Fix fqcn linter warning

    fqcn[action]: Use FQCN for module actions, such `community.docker.docker_container`.
    host-unicorn.yml:14 Action `docker_container` is not FQCN.
---
 host-unicorn.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/host-unicorn.yml b/host-unicorn.yml
index 362b119..374cd32 100644
--- a/host-unicorn.yml
+++ b/host-unicorn.yml
@@ -12,7 +12,7 @@
 
   tasks:
     - name: Setup the docker container for unifi-controller
-      docker_container:
+      community.docker.docker_container:
         name: unifi-controller
         image: jacobalberty/unifi:v9.0.114
         state: started

From 95706d0ad4ed579bec3cf40aca7b193f6bb05aed Mon Sep 17 00:00:00 2001
From: Alexander Dahl <alex@netz39.de>
Date: Sun, 9 Mar 2025 18:41:04 +0100
Subject: [PATCH 20/48] :rotating_light: host: tau: Fix fqcn linter warnings

    fqcn[action]: Use FQCN for module actions, such `community.docker.docker_network`.
    host-tau.yml:28 Action `docker_network` is not FQCN.

    fqcn[action-core]: Use FQCN for builtin module actions (include_role).
    host-tau.yml:37 Use `ansible.builtin.include_role` or `ansible.legacy.include_role` instead.

    fqcn[action-core]: Use FQCN for builtin module actions (include_role).
    host-tau.yml:54 Use `ansible.builtin.include_role` or `ansible.legacy.include_role` instead.

    fqcn[action]: Use FQCN for module actions, such `community.docker.docker_container`.
    host-tau.yml:61 Action `docker_container` is not FQCN.

    fqcn[action-core]: Use FQCN for builtin module actions (include_role).
    host-tau.yml:78 Use `ansible.builtin.include_role` or `ansible.legacy.include_role` instead.

    fqcn[action-core]: Use FQCN for builtin module actions (file).
    host-tau.yml:94 Use `ansible.builtin.file` or `ansible.legacy.file` instead.

    fqcn[action]: Use FQCN for module actions, such `community.docker.docker_container`.
    host-tau.yml:101 Action `docker_container` is not FQCN.

    fqcn[action-core]: Use FQCN for builtin module actions (include_role).
    host-tau.yml:120 Use `ansible.builtin.include_role` or `ansible.legacy.include_role` instead.

    fqcn[action]: Use FQCN for module actions, such `community.docker.docker_container`.
    host-tau.yml:149 Action `docker_container` is not FQCN.

    fqcn[action-core]: Use FQCN for builtin module actions (include_role).
    host-tau.yml:168 Use `ansible.builtin.include_role` or `ansible.legacy.include_role` instead.

    fqcn[action]: Use FQCN for module actions, such `community.docker.docker_container`.
    host-tau.yml:178 Action `docker_container` is not FQCN.

    fqcn[action-core]: Use FQCN for builtin module actions (include_role).
    host-tau.yml:193 Use `ansible.builtin.include_role` or `ansible.legacy.include_role` instead.
---
 host-tau.yml | 24 ++++++++++++------------
 1 file changed, 12 insertions(+), 12 deletions(-)

diff --git a/host-tau.yml b/host-tau.yml
index 5281c54..e92b6e4 100644
--- a/host-tau.yml
+++ b/host-tau.yml
@@ -26,7 +26,7 @@
 
   tasks:
     - name: Setup docker network
-      docker_network:
+      community.docker.docker_network:
         name: dockernet
         driver: bridge
         ipam_config:
@@ -35,7 +35,7 @@
         state: present
 
     - name: Setup Dehydrated
-      include_role:
+      ansible.builtin.include_role:
         name: 24367dfa.dehydrated
       vars:
         dehydrated_contact_email: "{{ server_admin }}"
@@ -52,14 +52,14 @@
             deploy_challenge_hook: "/bin/systemctl restart apache2"
 
     - name: Setup proxy site testredmine.netz39.de
-      include_role:
+      ansible.builtin.include_role:
         name: setup_http_site_proxy
       vars:
         site_name: testredmine.netz39.de
         proxy_port: 9004
 
     - name: Setup phpmyadmin
-      docker_container:
+      community.docker.docker_container:
         name: phpmyadmin
         state: started
         image: phpmyadmin:5.2
@@ -76,7 +76,7 @@
           - 9001:80
 
     - name: Setup proxy site mysql.adm.netz39.de
-      include_role:
+      ansible.builtin.include_role:
         name: setup_http_site_proxy
       vars:
         site_name: mysql.adm.netz39.de
@@ -93,13 +93,13 @@
       when: not docker_dir.stat.exists
     - name: Ensure the Docker Registry data directory exists
       # This may not be part of the backup
-      file:
+      ansible.builtin.file:
         path: "{{ data_dir }}/registry/data"
         state: directory
         mode: "0755"
 
     - name: Setup Docker Registry Container
-      docker_container:
+      community.docker.docker_container:
         name: registry
         image: registry:2
         pull: true
@@ -118,7 +118,7 @@
           - "{{ data_dir }}/registry/auth:/auth:rw"
 
     - name: Setup proxy site for the Docker Registry
-      include_role:
+      ansible.builtin.include_role:
         name: setup_http_site_proxy
       vars:
         site_name: "{{ docker_registry_domain }}"
@@ -147,7 +147,7 @@
         - dokuwiki
 
     - name: Setup Dokuwiki Container
-      docker_container:
+      community.docker.docker_container:
         name: dokuwiki
         image: "{{ dokuwiki_image }}"
         pull: true
@@ -166,7 +166,7 @@
         - dokuwiki
 
     - name: Setup proxy site for Dokuwiki
-      include_role:
+      ansible.builtin.include_role:
         name: setup_http_site_proxy
       vars:
         site_name: "{{ dokuwiki_domain }}"
@@ -176,7 +176,7 @@
 
 
     - name: Setup container for secondary FFMD DNS
-      docker_container:
+      community.docker.docker_container:
         name: bind9-md-freifunk-net
         image: ffmd/bind9-md-freifunk-net:v2022122301
         pull: true
@@ -191,7 +191,7 @@
         - ffmd-dns
 
     - name: Setup forwarding for Discord invite
-      include_role:
+      ansible.builtin.include_role:
         name: setup_http_site_forward
       vars:
         site_name: "{{ discord_invite_domain }}"

From 9eedf004a5df167422aa4bb28238ebca48381130 Mon Sep 17 00:00:00 2001
From: Alexander Dahl <alex@netz39.de>
Date: Sun, 9 Mar 2025 18:45:30 +0100
Subject: [PATCH 21/48] :rotating_light: host: radon: Fix fqcn linter warnings

    fqcn[action-core]: Use FQCN for builtin module actions (file).
    host-radon.yml:40 Use `ansible.builtin.file` or `ansible.legacy.file` instead.

    fqcn[action-core]: Use FQCN for builtin module actions (template).
    host-radon.yml:52 Use `ansible.builtin.template` or `ansible.legacy.template` instead.

    fqcn[action]: Use FQCN for module actions, such `community.docker.docker_container`.
    host-radon.yml:61 Action `docker_container` is not FQCN.

    fqcn[action]: Use FQCN for module actions, such `community.docker.docker_container`.
    host-radon.yml:91 Action `docker_container` is not FQCN.

    fqcn[action-core]: Use FQCN for builtin module actions (include_role).
    host-radon.yml:111 Use `ansible.builtin.include_role` or `ansible.legacy.include_role` instead.

    fqcn[action]: Use FQCN for module actions, such `community.docker.docker_container`.
    host-radon.yml:132 Action `docker_container` is not FQCN.

    fqcn[action-core]: Use FQCN for builtin module actions (include_role).
    host-radon.yml:153 Use `ansible.builtin.include_role` or `ansible.legacy.include_role` instead.

    fqcn[action]: Use FQCN for module actions, such `community.docker.docker_container`.
    host-radon.yml:162 Action `docker_container` is not FQCN.

    fqcn[action-core]: Use FQCN for builtin module actions (include_role).
    host-radon.yml:180 Use `ansible.builtin.include_role` or `ansible.legacy.include_role` instead.

    fqcn[action]: Use FQCN for module actions, such `community.docker.docker_container`.
    host-radon.yml:188 Action `docker_container` is not FQCN.

    fqcn[action-core]: Use FQCN for builtin module actions (include_role).
    host-radon.yml:204 Use `ansible.builtin.include_role` or `ansible.legacy.include_role` instead.

    fqcn[action]: Use FQCN for module actions, such `community.docker.docker_container`.
    host-radon.yml:213 Action `docker_container` is not FQCN.

    fqcn[action]: Use FQCN for module actions, such `community.docker.docker_container`.
    host-radon.yml:230 Action `docker_container` is not FQCN.
---
 host-radon.yml | 26 +++++++++++++-------------
 1 file changed, 13 insertions(+), 13 deletions(-)

diff --git a/host-radon.yml b/host-radon.yml
index 25abe17..6131bd4 100644
--- a/host-radon.yml
+++ b/host-radon.yml
@@ -38,7 +38,7 @@
 
   tasks:
     - name: Ensure the mosquitto directories exist
-      file:
+      ansible.builtin.file:
         path: "{{ item }}"
         mode: 0755
         state: directory
@@ -50,7 +50,7 @@
         - mosquitto
 
     - name: Make sure mosquitto config is there
-      template:
+      ansible.builtin.template:
         src: "templates/mosquitto.conf.j2"
         dest: "{{ mosquitto_data }}/config/mosquitto.conf"
         mode: 0644
@@ -59,7 +59,7 @@
         - mosquitto
 
     - name: Ensure mosquitto is running
-      docker_container:
+      community.docker.docker_container:
         name: mosquitto
         image: "{{ mosquitto_image }}"
         pull: true
@@ -89,7 +89,7 @@
       when: not nodered_dir.stat.exists
 
     - name: Ensure nodered is running
-      docker_container:
+      community.docker.docker_container:
         name: nodered
         image: "{{ nodered_image }}"
         pull: true
@@ -109,7 +109,7 @@
         restart_policy: unless-stopped
 
     - name: Setup proxy site nodered.n39.eu
-      include_role:
+      ansible.builtin.include_role:
         name: setup_http_site_proxy
       vars:
         site_name: "nodered.n39.eu"
@@ -130,7 +130,7 @@
         - rabbitmq
 
     - name: Ensure rabbitmq docker container is running
-      docker_container:
+      community.docker.docker_container:
         name: rabbitmq
         image: "{{ rabbitmq_image }}"
         ports:
@@ -151,7 +151,7 @@
         - rabbitmq
 
     - name: Setup proxy site rabbitmq.n39.eu
-      include_role:
+      ansible.builtin.include_role:
         name: setup_http_site_proxy
       vars:
         site_name: "rabbitmq.n39.eu"
@@ -160,7 +160,7 @@
         - rabbitmq
 
     - name: Ensure Power Meter Pulse Gateway for 19i room is running
-      docker_container:
+      community.docker.docker_container:
         name: pwr-meter-pulse-gw-19i
         image: "{{ pwr_meter_pulse_gw_image }}"
         ports:
@@ -178,7 +178,7 @@
         restart_policy: unless-stopped
 
     - name: Setup proxy site pwr-meter-pulse-gw-19i.svc.n39.eu
-      include_role:
+      ansible.builtin.include_role:
         name: setup_http_site_proxy
       vars:
         site_name: "pwr-meter-pulse-gw-19i.svc.n39.eu"
@@ -186,7 +186,7 @@
 
 
     - name: Setup docker container for BrotherQL Web UI printer
-      docker_container:
+      community.docker.docker_container:
         name: brotherql-web
         image: dersimn/brother_ql_web:2.1.9-alpine
         pull: true
@@ -202,7 +202,7 @@
         - labelprinter
 
     - name: Setup proxy site labelprinter.n39.eu
-      include_role:
+      ansible.builtin.include_role:
         name: setup_http_site_proxy
       vars:
         site_name: labelprinter.n39.eu
@@ -211,7 +211,7 @@
         - labelprinter
 
     - name: Setup docker container for Grafana Screenshots
-      docker_container:
+      community.docker.docker_container:
         name: grafana-screenshot
         image: mrtux/grafana-screenshot:0.1.3
         pull: true
@@ -228,7 +228,7 @@
 
   handlers:
     - name: Restart mosquitto container
-      docker_container:
+      community.docker.docker_container:
         name: mosquitto
         state: started
         restart: yes

From d145039dbe9f09ba123ef8f2c48b3bdb6add5798 Mon Sep 17 00:00:00 2001
From: Alexander Dahl <alex@netz39.de>
Date: Sun, 9 Mar 2025 18:52:52 +0100
Subject: [PATCH 22/48] :rotating_light: host: pottwal: Fix fqcn linter
 warnings

    fqcn[action]: Use FQCN for module actions, such `community.docker.docker_container`.
    host-pottwal.yml:57 Action `docker_container` is not FQCN.

    fqcn[action-core]: Use FQCN for builtin module actions (include_role).
    host-pottwal.yml:83 Use `ansible.builtin.include_role` or `ansible.legacy.include_role` instead.

    fqcn[action]: Use FQCN for module actions, such `community.docker.docker_container`.
    host-pottwal.yml:91 Action `docker_container` is not FQCN.

    fqcn[action]: Use FQCN for module actions, such `community.docker.docker_network`.
    host-pottwal.yml:104 Action `docker_network` is not FQCN.

    fqcn[action]: Use FQCN for module actions, such `community.docker.docker_container`.
    host-pottwal.yml:120 Action `docker_container` is not FQCN.

    fqcn[action]: Use FQCN for module actions, such `community.docker.docker_container`.
    host-pottwal.yml:140 Action `docker_container` is not FQCN.

    fqcn[action-core]: Use FQCN for builtin module actions (include_role).
    host-pottwal.yml:169 Use `ansible.builtin.include_role` or `ansible.legacy.include_role` instead.

    fqcn[action]: Use FQCN for module actions, such `community.docker.docker_container`.
    host-pottwal.yml:237 Action `docker_container` is not FQCN.

    fqcn[action]: Use FQCN for module actions, such `community.docker.docker_container`.
    host-pottwal.yml:259 Action `docker_container` is not FQCN.

    fqcn[action-core]: Use FQCN for builtin module actions (include_role).
    host-pottwal.yml:278 Use `ansible.builtin.include_role` or `ansible.legacy.include_role` instead.

    fqcn[action-core]: Use FQCN for builtin module actions (file).
    host-pottwal.yml:301 Use `ansible.builtin.file` or `ansible.legacy.file` instead.

    fqcn[action]: Use FQCN for module actions, such `community.docker.docker_network`.
    host-pottwal.yml:314 Action `docker_network` is not FQCN.

    fqcn[action]: Use FQCN for module actions, such `community.docker.docker_container`.
    host-pottwal.yml:322 Action `docker_container` is not FQCN.

    fqcn[action]: Use FQCN for module actions, such `community.docker.docker_container`.
    host-pottwal.yml:342 Action `docker_container` is not FQCN.

    fqcn[action-core]: Use FQCN for builtin module actions (include_role).
    host-pottwal.yml:374 Use `ansible.builtin.include_role` or `ansible.legacy.include_role` instead.

    fqcn[action-core]: Use FQCN for builtin module actions (file).
    host-pottwal.yml:383 Use `ansible.builtin.file` or `ansible.legacy.file` instead.

    fqcn[action]: Use FQCN for module actions, such `community.docker.docker_container`.
    host-pottwal.yml:393 Action `docker_container` is not FQCN.

    fqcn[action-core]: Use FQCN for builtin module actions (include_role).
    host-pottwal.yml:413 Use `ansible.builtin.include_role` or `ansible.legacy.include_role` instead.

    fqcn[action]: Use FQCN for module actions, such `community.docker.docker_network`.
    host-pottwal.yml:438 Action `docker_network` is not FQCN.

    fqcn[action]: Use FQCN for module actions, such `community.docker.docker_container`.
    host-pottwal.yml:446 Action `docker_container` is not FQCN.

    fqcn[action]: Use FQCN for module actions, such `community.docker.docker_container`.
    host-pottwal.yml:466 Action `docker_container` is not FQCN.

    fqcn[action-core]: Use FQCN for builtin module actions (include_role).
    host-pottwal.yml:492 Use `ansible.builtin.include_role` or `ansible.legacy.include_role` instead.

    fqcn[action-core]: Use FQCN for builtin module actions (file).
    host-pottwal.yml:501 Use `ansible.builtin.file` or `ansible.legacy.file` instead.

    fqcn[action]: Use FQCN for module actions, such `community.docker.docker_container`.
    host-pottwal.yml:511 Action `docker_container` is not FQCN.

    fqcn[action-core]: Use FQCN for builtin module actions (include_role).
    host-pottwal.yml:528 Use `ansible.builtin.include_role` or `ansible.legacy.include_role` instead.

    fqcn[action-core]: Use FQCN for builtin module actions (file).
    host-pottwal.yml:537 Use `ansible.builtin.file` or `ansible.legacy.file` instead.

    fqcn[action]: Use FQCN for module actions, such `community.docker.docker_container`.
    host-pottwal.yml:554 Action `docker_container` is not FQCN.

    fqcn[action-core]: Use FQCN for builtin module actions (include_role).
    host-pottwal.yml:575 Use `ansible.builtin.include_role` or `ansible.legacy.include_role` instead.

    fqcn[action-core]: Use FQCN for builtin module actions (file).
    host-pottwal.yml:585 Use `ansible.builtin.file` or `ansible.legacy.file` instead.

    fqcn[action]: Use FQCN for module actions, such `community.docker.docker_container`.
    host-pottwal.yml:599 Action `docker_container` is not FQCN.

    fqcn[action-core]: Use FQCN for builtin module actions (include_role).
    host-pottwal.yml:619 Use `ansible.builtin.include_role` or `ansible.legacy.include_role` instead.

    fqcn[action-core]: Use FQCN for builtin module actions (template).
    host-pottwal.yml:629 Use `ansible.builtin.template` or `ansible.legacy.template` instead.

    fqcn[action-core]: Use FQCN for builtin module actions (service).
    host-pottwal.yml:657 Use `ansible.builtin.service` or `ansible.legacy.service` instead.
---
 host-pottwal.yml | 68 ++++++++++++++++++++++++------------------------
 1 file changed, 34 insertions(+), 34 deletions(-)

diff --git a/host-pottwal.yml b/host-pottwal.yml
index 05af3c1..72e3c4e 100644
--- a/host-pottwal.yml
+++ b/host-pottwal.yml
@@ -55,7 +55,7 @@
     # If port 2222 is changed here, it must also be adapted
     # in the forgejo config file (see application volume)!!
     - name: Setup the docker container for forgejo
-      docker_container:
+      community.docker.docker_container:
         name: forgejo
         image: "{{ forgejo_image }}"
         pull: true
@@ -81,7 +81,7 @@
       tags: ["forgejo"]
 
     - name: Setup proxy site "{{ forgejo_domain_name }}"
-      include_role:
+      ansible.builtin.include_role:
         name: setup_http_site_proxy
       vars:
         site_name: "{{ forgejo_domain_name }}"
@@ -89,7 +89,7 @@
       tags: ["forgejo"]
 
     - name: Ensure apt-cacher container is running
-      docker_container:
+      community.docker.docker_container:
         name: apt_cacher_ng
         image: mrtux/apt-cacher-ng:latest
         pull: true
@@ -102,7 +102,7 @@
           TZ: "{{ timezone }}"
 
     - name: Setup docker network
-      docker_network:
+      community.docker.docker_network:
         name: shlinknet
         state: present
         internal: true
@@ -118,7 +118,7 @@
         - shlink
 
     - name: Ensure shlink database container is running
-      docker_container:
+      community.docker.docker_container:
         name: shlinkdb
         image: postgres:16.8-alpine
         pull: true
@@ -138,7 +138,7 @@
         - shlink
 
     - name: Ensure container for shlink is running
-      docker_container:
+      community.docker.docker_container:
         name: shlink
         image: "{{ shlink_image }}"
         pull: true
@@ -167,7 +167,7 @@
         - shlink
 
     - name: Setup proxy site {{ shlink_domain_name }}
-      include_role:
+      ansible.builtin.include_role:
         name: setup_http_site_proxy
       vars:
         site_name: "{{ shlink_domain_name }}"
@@ -235,7 +235,7 @@
         - Restart prosody
 
     - name: Ensure container for prosody XMPP server is running
-      docker_container:
+      community.docker.docker_container:
         name: prosody
         image: "{{ prosody_image }}"
         pull: true
@@ -257,7 +257,7 @@
 
 
     - name: Ensure container for static XMPP website is running
-      docker_container:
+      community.docker.docker_container:
         name: jabber-static-website
         image: "{{ prosody_web_image }}"
         pull: true
@@ -277,7 +277,7 @@
 
     - name: Setup proxy site {{ prosody_domain_name }}
       # point to static website for now
-      include_role:
+      ansible.builtin.include_role:
         name: setup_http_site_proxy
       vars:
         site_name: "{{ prosody_domain_name }}"
@@ -299,7 +299,7 @@
         - hedgedoc
 
     - name: Ensure the hedgedoc directories exist
-      file:
+      ansible.builtin.file:
         path: "{{ item.path }}"
         mode: "{{ item.mode }}"
         state: directory
@@ -312,7 +312,7 @@
         - hedgedoc
 
     - name: Setup docker network
-      docker_network:
+      community.docker.docker_network:
         name: hedgedocnet
         state: present
         internal: true
@@ -320,7 +320,7 @@
         - hedgedoc
 
     - name: Install HedgeDoc database container
-      docker_container:
+      community.docker.docker_container:
         name: hedgedocdb
         image: "{{ hedgedoc_db_image }}"
         pull: true
@@ -340,7 +340,7 @@
         - hedgedoc
 
     - name: Ensure container for hedgedoc is running
-      docker_container:
+      community.docker.docker_container:
         name: hedgedoc
         image: "{{ hedgedoc_image }}"
         pull: true
@@ -372,7 +372,7 @@
         - hedgedoc
 
     - name: Setup proxy site "{{ hedgedoc_domain_name }}"
-      include_role:
+      ansible.builtin.include_role:
         name: setup_http_site_proxy
       vars:
         site_name: "{{ hedgedoc_domain_name }}"
@@ -381,7 +381,7 @@
         - hedgedoc
 
     - name: Ensure the influxdb directories exist
-      file:
+      ansible.builtin.file:
         path: "{{ item }}"
         mode: 0700
         state: directory
@@ -391,7 +391,7 @@
         - "{{ data_dir }}/influxdb/cfg"
 
     - name: Ensure container for influxdb is running
-      docker_container:
+      community.docker.docker_container:
         name: influxdb
         image: "{{ influxdb_image }}"
         pull: true
@@ -411,7 +411,7 @@
           - "{{ data_dir }}/influxdb/cfg:/etc/influxdb2"
 
     - name: Setup proxy site {{ influxdb_domain_name }}
-      include_role:
+      ansible.builtin.include_role:
         name: setup_http_site_proxy
       vars:
         site_name: "{{ influxdb_domain_name }}"
@@ -436,7 +436,7 @@
         - redmine
 
     - name: Setup Redmine docker network
-      docker_network:
+      community.docker.docker_network:
         name: redminenet
         state: present
         internal: true
@@ -444,7 +444,7 @@
         - redmine
 
     - name: Setup Redmine MySQL container
-      docker_container:
+      community.docker.docker_container:
         name: redminedb
         image: "{{ redmine_mysql_image }}"
         pull: true
@@ -464,7 +464,7 @@
         - redmine
 
     - name: Setup Redmine container
-      docker_container:
+      community.docker.docker_container:
         name: redmine
         image: "{{ redmine_image }}"
         pull: true
@@ -490,7 +490,7 @@
         - redmine
 
     - name: Setup proxy site "{{ redmine_domain_name }}"
-      include_role:
+      ansible.builtin.include_role:
         name: setup_http_site_proxy
       vars:
         site_name: "{{ redmine_domain_name }}"
@@ -499,7 +499,7 @@
         - redmine
 
     - name: Ensure the uptime-kuma directories exist
-      file:
+      ansible.builtin.file:
         path: "{{ item }}"
         mode: "0755"
         state: directory
@@ -509,7 +509,7 @@
         - uptimekuma
 
     - name: Ensure container for uptime-kuma is running
-      docker_container:
+      community.docker.docker_container:
         name: uptime-kuma
         image: "{{ uptimekuma_image }}"
         pull: true
@@ -526,7 +526,7 @@
         - uptimekuma
 
     - name: Setup proxy site "{{ uptimekuma_domain_name }}"
-      include_role:
+      ansible.builtin.include_role:
         name: setup_http_site_proxy
       vars:
         site_name: "{{ uptimekuma_domain_name }}"
@@ -535,7 +535,7 @@
         - uptimekuma
 
     - name: Ensure the grafana directories exist
-      file:
+      ansible.builtin.file:
         path: "{{ item.path }}"
         owner: "{{ item.owner | default('root') }}"
         mode: "{{ item.mode }}"
@@ -552,7 +552,7 @@
         - grafana
 
     - name: Ensure container for grafana is running
-      docker_container:
+      community.docker.docker_container:
         name: grafana
         image: "{{ grafana_image }}"
         pull: true
@@ -573,7 +573,7 @@
         - grafana
 
     - name: Setup proxy site "{{ grafana_domain_name }}"
-      include_role:
+      ansible.builtin.include_role:
         name: setup_http_site_proxy
       vars:
         site_name: "{{ grafana_domain_name }}"
@@ -583,7 +583,7 @@
         - grafana
 
     - name: Ensure the homebox directories exist
-      file:
+      ansible.builtin.file:
         path: "{{ item.path }}"
         owner: "{{ item.owner | default('root') }}"
         mode: "{{ item.mode }}"
@@ -597,7 +597,7 @@
         - homebox
 
     - name: Ensure container for homebox is running
-      docker_container:
+      community.docker.docker_container:
         name: homebox
         image: "{{ homebox_image }}"
         pull: true
@@ -617,7 +617,7 @@
         - homebox
 
     - name: Setup proxy site {{ homebox_domain_name }}
-      include_role:
+      ansible.builtin.include_role:
         name: setup_http_site_proxy
       vars:
         site_name: "{{ homebox_domain_name }}"
@@ -627,7 +627,7 @@
         - homebox
 
     - name: Setup proxy site spaceapi.n39.eu
-      template:
+      ansible.builtin.template:
         src: templates/pottwal/spaceapi-apache-site.j2
         dest: /etc/apache2/sites-available/spaceapi.n39.eu.conf
         mode: "0644"
@@ -655,7 +655,7 @@
         restart: yes
 
     - name: Restart apache2
-      service:
+      ansible.builtin.service:
         name: apache2
         state: restarted
 
@@ -663,6 +663,6 @@
       ansible.builtin.shell:
         cmd: service cron reload
     # Use the shell call because the task sometimes has problems finding the service state
-    #  service:
+    #  ansible.builtin.service:
     #    name: cron
     #    state: restarted

From fcd3b9c87bae094f8e000a6524c5812b79006be7 Mon Sep 17 00:00:00 2001
From: Alexander Dahl <alex@netz39.de>
Date: Sun, 9 Mar 2025 18:54:47 +0100
Subject: [PATCH 23/48] :rotating_light: host: platon: Fix fqcn linter warnings

    fqcn[action-core]: Use FQCN for builtin module actions (service).
    host-platon.yml:308 Use `ansible.builtin.service` or `ansible.legacy.service` instead.

    fqcn[action-core]: Use FQCN for builtin module actions (service).
    host-platon.yml:314 Use `ansible.builtin.service` or `ansible.legacy.service` instead.

    fqcn[action-core]: Use FQCN for builtin module actions (service).
    host-platon.yml:320 Use `ansible.builtin.service` or `ansible.legacy.service` instead.
---
 host-platon.yml | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/host-platon.yml b/host-platon.yml
index fa03f70..21027c4 100644
--- a/host-platon.yml
+++ b/host-platon.yml
@@ -306,19 +306,19 @@
 
   handlers:
     - name: Restart mosquitto service
-      service:
+      ansible.builtin.service:
         name: mosquitto
         state: restarted
         enabled: yes
 
     - name: Restart rsyslog
-      service:
+      ansible.builtin.service:
         name: rsyslog
         state: restarted
         enabled: yes
 
     - name: Restart asterisk
-      service:
+      ansible.builtin.service:
         name: asterisk
         state: restarted
         enabled: yes

From 2b9b1d1c39b08e988af1f9510b6c14c5f152cd85 Mon Sep 17 00:00:00 2001
From: Alexander Dahl <alex@netz39.de>
Date: Sun, 9 Mar 2025 18:57:04 +0100
Subject: [PATCH 24/48] :rotating_light: host: krypton: Fix fqcn linter
 warnings

    fqcn[action-core]: Use FQCN for builtin module actions (file).
    host-krypton.yml:41 Use `ansible.builtin.file` or `ansible.legacy.file` instead.

    fqcn[action]: Use FQCN for module actions, such `community.docker.docker_container`.
    host-krypton.yml:52 Action `docker_container` is not FQCN.

    fqcn[action]: Use FQCN for module actions, such `community.docker.docker_container`.
    host-krypton.yml:117 Action `docker_container` is not FQCN.

    fqcn[action-core]: Use FQCN for builtin module actions (include_role).
    host-krypton.yml:130 Use `ansible.builtin.include_role` or `ansible.legacy.include_role` instead.
---
 host-krypton.yml | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/host-krypton.yml b/host-krypton.yml
index f82daa8..2efdf68 100644
--- a/host-krypton.yml
+++ b/host-krypton.yml
@@ -33,13 +33,13 @@
   tasks:
 
     # - name: Setup dehydrated challenge endpoint for {{ openldap_domain }}
-    #   include_role:
+    #   ansible.builtin.include_role:
     #     name: setup-http-dehydrated
     #   vars:
     #     site_name: "{{ openldap_domain }}"
 
     - name: Ensure openLDAP directories are present.
-      file:
+      ansible.builtin.file:
         path: "{{ item.path }}"
         mode: "0755"
         state: directory
@@ -50,7 +50,7 @@
         - path: "{{ dehydrated_certs_dir }}/{{ openldap_domain }}"
 
     - name: Ensure container for openLDAP is running.
-      docker_container:
+      community.docker.docker_container:
         name: openLDAP
         image: osixia/openldap:1.5.0
         detach: yes
@@ -115,7 +115,7 @@
 
 
     - name: Ensure container for entities validation service is running
-      docker_container:
+      community.docker.docker_container:
         name: entities_validation_svc
         image: netz39/entities_validation_svc:v1.0.4
         pull: true
@@ -128,7 +128,7 @@
           TZ: "{{ timezone }}"
 
     - name: Setup proxy site entities-validation.svc.n39.eu
-      include_role:
+      ansible.builtin.include_role:
         name: setup_http_site_proxy
       vars:
         site_name: entities-validation.svc.n39.eu

From 6f1e80493ade3ef58201483b9a339e6b716af826 Mon Sep 17 00:00:00 2001
From: Alexander Dahl <alex@netz39.de>
Date: Sun, 9 Mar 2025 18:59:22 +0100
Subject: [PATCH 25/48] :rotating_light: group: all: Fix fqcn linter warnings

    WARNING  Listing 3 violation(s) that are fatal
    fqcn[action-core]: Use FQCN for builtin module actions (apt).
    group-all.yml:16 Use `ansible.builtin.apt` or `ansible.legacy.apt` instead.

    fqcn[action-core]: Use FQCN for builtin module actions (apt).
    group-all.yml:23 Use `ansible.builtin.apt` or `ansible.legacy.apt` instead.

    fqcn[action-core]: Use FQCN for builtin module actions (include_role).
    group-all.yml:28 Use `ansible.builtin.include_role` or `ansible.legacy.include_role` instead.

    Read documentation for instructions on how to ignore specific rule violations.

                     Rule Violation Summary
     count tag               profile    rule associated tags
         3 fqcn[action-core] production formatting

    Failed after shared profile, 4/5 star rating: 3 failure(s), 0 warning(s) on 135 files.
---
 group-all.yml | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/group-all.yml b/group-all.yml
index b99f764..121f582 100644
--- a/group-all.yml
+++ b/group-all.yml
@@ -14,19 +14,19 @@
 
   tasks:
     - name: Update and clean package cache
-      apt:
+      ansible.builtin.apt:
         update_cache: true
         cache_valid_time: 3600
         autoclean: true
       changed_when: false
 
     - name: Ensure unattended-upgrades is installed and up to date
-      apt:
+      ansible.builtin.apt:
         name: unattended-upgrades
         state: present
 
     - name: Setup unattended-upgrades
-      include_role:
+      ansible.builtin.include_role:
         name: hifis.unattended_upgrades
       vars:
         unattended_origins_patterns:

From d1dbda444dc23ff9b12e27376e91968e30be9842 Mon Sep 17 00:00:00 2001
From: Renovate Bot <accounts+renovatebot@netz39.de>
Date: Tue, 11 Mar 2025 17:18:04 +0000
Subject: [PATCH 26/48] chore(deps): update redmine docker tag to v6.0.4

---
 host_vars/pottwal.n39.eu/vars.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/host_vars/pottwal.n39.eu/vars.yml b/host_vars/pottwal.n39.eu/vars.yml
index 0bc87a4..3dda971 100644
--- a/host_vars/pottwal.n39.eu/vars.yml
+++ b/host_vars/pottwal.n39.eu/vars.yml
@@ -28,7 +28,7 @@ hedgedoc_postgres_password: "{{ vault_hedgedoc_postgres_password }}"
 
 redmine_host_port: 8087
 redmine_domain_name: redmine.n39.eu
-redmine_image: redmine:6.0.3
+redmine_image: redmine:6.0.4
 redmine_mysql_image: mysql:9.2
 redmine_database: redmine
 redmine_database_password: "{{ vault_redmine_database_password }}"

From 031fe9c06ed924928a65ee55fef14544bc61118e Mon Sep 17 00:00:00 2001
From: Stefan Haun <tux@netz39.de>
Date: Thu, 6 Mar 2025 10:26:08 +0100
Subject: [PATCH 27/48] Add comment to clarify Renovate configuration source

---
 host-pottwal.yml | 1 +
 1 file changed, 1 insertion(+)

diff --git a/host-pottwal.yml b/host-pottwal.yml
index 05af3c1..4fab96d 100644
--- a/host-pottwal.yml
+++ b/host-pottwal.yml
@@ -638,6 +638,7 @@
       tags:
         - spaceapi
 
+    # Renovate configuration is sourced from `renovate.json` in each repository
     - name: Ensure renovate bot cronjob is present
       ansible.builtin.template:
         src: templates/pottwal/renovate-cron.j2

From b9416d00962856965fa71d430ab7d1f2b06ea3be Mon Sep 17 00:00:00 2001
From: Stefan Haun <tux@netz39.de>
Date: Tue, 4 Mar 2025 23:00:36 +0100
Subject: [PATCH 28/48] Limit renovate/renovate updates to Friday before 1am

This effectively reduces the renovate update PRs to (mostly) once per week.
---
 renovate.json | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/renovate.json b/renovate.json
index b70eae7..7182867 100644
--- a/renovate.json
+++ b/renovate.json
@@ -15,8 +15,9 @@
   ],
   "packageRules": [
     {
+      "matchDatasources": ["docker"],
       "matchPackageNames": ["renovate/renovate"],
-      "schedule": [ "on friday" ]
+      "schedule": [ "before 1am on friday" ]
     }
   ]
 }

From 5a591c414595bf6ee9173e5d2742561dfc1442b2 Mon Sep 17 00:00:00 2001
From: Stefan Haun <tux@netz39.de>
Date: Thu, 6 Mar 2025 10:33:30 +0100
Subject: [PATCH 29/48] Allow automerge for renovate/renovate

---
 renovate.json | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/renovate.json b/renovate.json
index 7182867..ec350d4 100644
--- a/renovate.json
+++ b/renovate.json
@@ -17,7 +17,8 @@
     {
       "matchDatasources": ["docker"],
       "matchPackageNames": ["renovate/renovate"],
-      "schedule": [ "before 1am on friday" ]
+      "schedule": [ "before 1am on friday" ],
+      "automerge": true
     }
   ]
 }

From e5d1c2ac886fd7218dac7002ead3cacf2c21a43e Mon Sep 17 00:00:00 2001
From: Renovate Bot <accounts+renovatebot@netz39.de>
Date: Wed, 12 Mar 2025 13:18:06 +0000
Subject: [PATCH 30/48] chore(deps): update renovate/renovate docker tag to
 v39.198.1

---
 host_vars/pottwal.n39.eu/vars.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/host_vars/pottwal.n39.eu/vars.yml b/host_vars/pottwal.n39.eu/vars.yml
index 3dda971..e3d7798 100644
--- a/host_vars/pottwal.n39.eu/vars.yml
+++ b/host_vars/pottwal.n39.eu/vars.yml
@@ -59,7 +59,7 @@ homebox_host_port: 8092
 homebox_domain_name: inventory.n39.eu
 homebox_image: ghcr.io/hay-kot/homebox:v0.10.3
 
-renovate_image: renovate/renovate:39.180.2
+renovate_image: renovate/renovate:39.198.1
 renovate_forgejo_pat: "{{ vault_renovate_forgejo_pat }}"
 renovate_github_pat: "{{ vault_renovate_github_pat }}"
 renovate_git_user: "Renovate Bot <accounts+renovatebot@netz39.de>"

From 28d80515b2ac46fb4f21e3553106b53134e7e23a Mon Sep 17 00:00:00 2001
From: Alexander Dahl <alex@netz39.de>
Date: Wed, 12 Mar 2025 18:25:05 +0100
Subject: [PATCH 31/48] :arrow_up: requirements: Migrate unattended-upgrades

The role was moved into a collection.

Link: https://github.com/hifis-net/ansible-collection-toolkit#looking-for-the-unattended_upgrades-role
Link: https://github.com/hifis-net/ansible-collection-toolkit/releases/tag/v4.0.0
Link: https://github.com/hifis-net/ansible-collection-toolkit/issues/165
---
 group-all.yml    | 2 +-
 requirements.yml | 5 +++--
 2 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/group-all.yml b/group-all.yml
index 121f582..8d06a78 100644
--- a/group-all.yml
+++ b/group-all.yml
@@ -27,7 +27,7 @@
 
     - name: Setup unattended-upgrades
       ansible.builtin.include_role:
-        name: hifis.unattended_upgrades
+        name: hifis.toolkit.unattended_upgrades
       vars:
         unattended_origins_patterns:
           - "origin=*"
diff --git a/requirements.yml b/requirements.yml
index 9569bec..b5d6c89 100644
--- a/requirements.yml
+++ b/requirements.yml
@@ -1,7 +1,5 @@
 ---
 roles:
-  - src: hifis.unattended_upgrades
-    version: v3.2.1
   - name: adriagalin.timezone
     src: git+https://github.com/adriagalin/ansible.timezone.git
     version: 4.0.0
@@ -23,3 +21,6 @@ roles:
 collections:
   - name: community.grafana
     version: 2.1.0
+  # for role 'hifis.toolkit.unattended_upgrades'
+  - name: hifis.toolkit
+    version: 5.3.0

From 7eebfd5d6167a3c4c45c053d0393682ac579dcac Mon Sep 17 00:00:00 2001
From: Alexander Dahl <alex@netz39.de>
Date: Fri, 14 Mar 2025 08:50:56 +0100
Subject: [PATCH 32/48] :pencil2: host: tau: Fix misleading task name

Task here is to check the auth dir, not the data dir, that's a different
one.  Rename the used variable while at it.

Fixes: f539a42024a4 ("Add a docker registry")
---
 host-tau.yml | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/host-tau.yml b/host-tau.yml
index e92b6e4..e204b4d 100644
--- a/host-tau.yml
+++ b/host-tau.yml
@@ -86,11 +86,11 @@
     - name: Check if Docker Registry auth dir exists
       ansible.builtin.stat:
         path: "{{ data_dir }}/registry/auth"
-      register: docker_dir
-    - name: Fail if docker registry data dir does not exist
+      register: docker_registry_auth_dir
+    - name: Fail if Docker Registry auth dir does not exist
       ansible.builtin.fail:
         msg: "Docker Registry auth dir is missing, please restore from the backup!"
-      when: not docker_dir.stat.exists
+      when: not docker_registry_auth_dir.stat.exists
     - name: Ensure the Docker Registry data directory exists
       # This may not be part of the backup
       ansible.builtin.file:

From b05df7aa1d327979b7e4d18e71be62b66938cf09 Mon Sep 17 00:00:00 2001
From: Renovate Bot <accounts+renovatebot@netz39.de>
Date: Mon, 17 Mar 2025 08:18:07 +0000
Subject: [PATCH 33/48] Update renovate/renovate Docker tag to v39.206.0

---
 host_vars/pottwal.n39.eu/vars.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/host_vars/pottwal.n39.eu/vars.yml b/host_vars/pottwal.n39.eu/vars.yml
index e3d7798..f3b9815 100644
--- a/host_vars/pottwal.n39.eu/vars.yml
+++ b/host_vars/pottwal.n39.eu/vars.yml
@@ -59,7 +59,7 @@ homebox_host_port: 8092
 homebox_domain_name: inventory.n39.eu
 homebox_image: ghcr.io/hay-kot/homebox:v0.10.3
 
-renovate_image: renovate/renovate:39.198.1
+renovate_image: renovate/renovate:39.206.0
 renovate_forgejo_pat: "{{ vault_renovate_forgejo_pat }}"
 renovate_github_pat: "{{ vault_renovate_github_pat }}"
 renovate_git_user: "Renovate Bot <accounts+renovatebot@netz39.de>"

From 725fa1d07408cfe678cd6ba539947b25bed23e2d Mon Sep 17 00:00:00 2001
From: Alexander Dahl <alex@netz39.de>
Date: Wed, 19 Mar 2025 22:00:12 +0100
Subject: [PATCH 34/48] :pencil2: host: pottwal: Fix misleading task name

Looks like a copy'n'paste mistake.  Improve the other task name while at
it.

Fixes: 88e14f7ca699 (":ok_hand: pottwal: Move prosody config to /etc")
---
 host-pottwal.yml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/host-pottwal.yml b/host-pottwal.yml
index beb23b5..c6b97ad 100644
--- a/host-pottwal.yml
+++ b/host-pottwal.yml
@@ -184,7 +184,7 @@
         msg: "prosody data dir is missing, please restore from the backup!"
       when: not prosody_dir.stat.exists
 
-    - name: Ensure prosody config dir exists
+    - name: Ensure prosody main config dir exists
       ansible.builtin.file:
         path: "{{ prosody_config_dir }}"
         state: directory
@@ -204,7 +204,7 @@
         state: directory
         mode: 0755
 
-    - name: Ensure prosody certs dir exists
+    - name: Ensure prosody conf.d dir exists
       ansible.builtin.file:
         path: "{{ prosody_config_dir }}/conf.d"
         state: directory

From cdc1d52a383dd4fe4f17f5c39d36dcef623766ee Mon Sep 17 00:00:00 2001
From: Renovate Bot <accounts+renovatebot@netz39.de>
Date: Thu, 20 Mar 2025 09:18:06 +0000
Subject: [PATCH 35/48] Update shlinkio/shlink Docker tag to v4.4.6

---
 host_vars/pottwal.n39.eu/vars.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/host_vars/pottwal.n39.eu/vars.yml b/host_vars/pottwal.n39.eu/vars.yml
index f3b9815..d164b69 100644
--- a/host_vars/pottwal.n39.eu/vars.yml
+++ b/host_vars/pottwal.n39.eu/vars.yml
@@ -16,7 +16,7 @@ forgejo_image: codeberg.org/forgejo/forgejo:10.0.1
 
 shlink_host_port: 8083
 shlink_domain_name: sl.n39.eu
-shlink_image: shlinkio/shlink:4.4.5
+shlink_image: shlinkio/shlink:4.4.6
 shlink_initial_api_key: "{{ vault_shlink_initial_api_key }}"
 shlink_postgres_password: "{{ vault_shlink_postgres_password }}"
 

From 1135385fe6e7cad14261f1dcc7014ad15dc460c3 Mon Sep 17 00:00:00 2001
From: Renovate Bot <accounts+renovatebot@netz39.de>
Date: Fri, 21 Mar 2025 13:18:04 +0000
Subject: [PATCH 36/48] Update codeberg.org/forgejo/forgejo Docker tag to
 v10.0.2

---
 host_vars/pottwal.n39.eu/vars.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/host_vars/pottwal.n39.eu/vars.yml b/host_vars/pottwal.n39.eu/vars.yml
index d164b69..3841d41 100644
--- a/host_vars/pottwal.n39.eu/vars.yml
+++ b/host_vars/pottwal.n39.eu/vars.yml
@@ -12,7 +12,7 @@ cleanuri_amqp_vhost: "/cleanuri"
 forgejo_host_port: 9091
 forgejo_ssh_port: 2222
 forgejo_domain_name: git.n39.eu
-forgejo_image: codeberg.org/forgejo/forgejo:10.0.1
+forgejo_image: codeberg.org/forgejo/forgejo:10.0.2
 
 shlink_host_port: 8083
 shlink_domain_name: sl.n39.eu

From 5a414892462eaf6dc71833bb0c1032fe414b799f Mon Sep 17 00:00:00 2001
From: Renovate Bot <accounts+renovatebot@netz39.de>
Date: Fri, 21 Mar 2025 13:18:14 +0000
Subject: [PATCH 37/48] Update renovate/renovate Docker tag to v39.211.0

---
 host_vars/pottwal.n39.eu/vars.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/host_vars/pottwal.n39.eu/vars.yml b/host_vars/pottwal.n39.eu/vars.yml
index 3841d41..306aed4 100644
--- a/host_vars/pottwal.n39.eu/vars.yml
+++ b/host_vars/pottwal.n39.eu/vars.yml
@@ -59,7 +59,7 @@ homebox_host_port: 8092
 homebox_domain_name: inventory.n39.eu
 homebox_image: ghcr.io/hay-kot/homebox:v0.10.3
 
-renovate_image: renovate/renovate:39.206.0
+renovate_image: renovate/renovate:39.211.0
 renovate_forgejo_pat: "{{ vault_renovate_forgejo_pat }}"
 renovate_github_pat: "{{ vault_renovate_github_pat }}"
 renovate_git_user: "Renovate Bot <accounts+renovatebot@netz39.de>"

From 4c467865e7d3b9c353ec9b5c6d275129c01a6f32 Mon Sep 17 00:00:00 2001
From: Renovate Bot <accounts+renovatebot@netz39.de>
Date: Sun, 23 Mar 2025 09:18:06 +0000
Subject: [PATCH 38/48] Update codeberg.org/forgejo/forgejo Docker tag to
 v10.0.3

---
 host_vars/pottwal.n39.eu/vars.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/host_vars/pottwal.n39.eu/vars.yml b/host_vars/pottwal.n39.eu/vars.yml
index 306aed4..4190722 100644
--- a/host_vars/pottwal.n39.eu/vars.yml
+++ b/host_vars/pottwal.n39.eu/vars.yml
@@ -12,7 +12,7 @@ cleanuri_amqp_vhost: "/cleanuri"
 forgejo_host_port: 9091
 forgejo_ssh_port: 2222
 forgejo_domain_name: git.n39.eu
-forgejo_image: codeberg.org/forgejo/forgejo:10.0.2
+forgejo_image: codeberg.org/forgejo/forgejo:10.0.3
 
 shlink_host_port: 8083
 shlink_domain_name: sl.n39.eu

From b1b480f415cd89e1dc2c87b01dce433bc1f3f76b Mon Sep 17 00:00:00 2001
From: Renovate Bot <accounts+renovatebot@netz39.de>
Date: Sun, 23 Mar 2025 20:23:14 +0000
Subject: [PATCH 39/48] Update dependency 24367dfa.dehydrated to v2.1.0

---
 requirements.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/requirements.yml b/requirements.yml
index 9569bec..f905eec 100644
--- a/requirements.yml
+++ b/requirements.yml
@@ -7,7 +7,7 @@ roles:
     version: 4.0.0
   - name: 24367dfa.dehydrated
     src: git+https://github.com/24367dfa/ansible-role-dehydrated.git
-    version: 2.0.0
+    version: 2.1.0
   - name: penguineer.dehydrated_cron
     src: https://github.com/penguineer/ansible-role-dehydrated_cron.git
     version: v1.1.0

From 94757d97855b07998fafab9c2ca9b1655e1af3b0 Mon Sep 17 00:00:00 2001
From: Renovate Bot <accounts+renovatebot@netz39.de>
Date: Sun, 23 Mar 2025 20:24:03 +0000
Subject: [PATCH 40/48] Update netz39/ampel-controller Docker tag to v0.2.0

---
 host_vars/wittgenstein.n39.eu/vars.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/host_vars/wittgenstein.n39.eu/vars.yml b/host_vars/wittgenstein.n39.eu/vars.yml
index 6bca558..2cebfa5 100644
--- a/host_vars/wittgenstein.n39.eu/vars.yml
+++ b/host_vars/wittgenstein.n39.eu/vars.yml
@@ -11,7 +11,7 @@ spaceapi_image: netz39/spaceapi-service:0.1.1
 spaceapi_topic_status: "Netz39/SpaceAPI/isOpen"
 spaceapi_topic_lastchange: "Netz39/SpaceAPI/lastchange"
 
-ampelcontroller_image: netz39/ampel-controller:0.1.0
+ampelcontroller_image: netz39/ampel-controller:0.2.0
 topic_lever_state: "Netz39/Things/StatusSwitch/Lever/State"
 topic_door_events: "Netz39/Things/Door/Events"
 topic_traffic_light: "Netz39/Things/Ampel/Light"

From 82523e8bcd7dd697b312d972e3982b17d19b85e5 Mon Sep 17 00:00:00 2001
From: Renovate Bot <accounts+renovatebot@netz39.de>
Date: Tue, 25 Mar 2025 21:18:14 +0000
Subject: [PATCH 41/48] Update grafana/grafana Docker tag to v11.6.0

---
 host_vars/pottwal.n39.eu/vars.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/host_vars/pottwal.n39.eu/vars.yml b/host_vars/pottwal.n39.eu/vars.yml
index 4190722..d148293 100644
--- a/host_vars/pottwal.n39.eu/vars.yml
+++ b/host_vars/pottwal.n39.eu/vars.yml
@@ -52,7 +52,7 @@ uptimekuma_image: louislam/uptime-kuma:1.23.16
 
 grafana_host_port: 8089
 grafana_domain_name: grafana.n39.eu
-grafana_image: grafana/grafana:11.5.2
+grafana_image: grafana/grafana:11.6.0
 grafana_admin_password: "{{ vault_grafana_admin_password }}"
 
 homebox_host_port: 8092

From 640596f73dc589f1b9cec23bdcc8edad6d159727 Mon Sep 17 00:00:00 2001
From: Stefan Haun <tux@netz39.de>
Date: Tue, 18 Mar 2025 14:24:03 +0100
Subject: [PATCH 42/48] :arrow_up: Bumn mrtux/cleanuri-webui to 0.2.2

---
 roles/cleanuri/defaults/main.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/roles/cleanuri/defaults/main.yml b/roles/cleanuri/defaults/main.yml
index c81ad6f..81fbd00 100644
--- a/roles/cleanuri/defaults/main.yml
+++ b/roles/cleanuri/defaults/main.yml
@@ -19,7 +19,7 @@ cleanuri_amqp_canonizer: "canonizer"
 cleanuri_amqp_retrieval: "extractor"
 
 # Docker images
-cleanuri_image_webui: mrtux/cleanuri-webui:0.2.1
+cleanuri_image_webui: mrtux/cleanuri-webui:0.2.2
 cleanuri_image_apigateway: mrtux/cleanuri-apigateway:0.3.1
 cleanuri_image_canonizer: mrtux/cleanuri-canonizer:0.5.0
 cleanuri_image_extractor: mrtux/cleanuri-extractor:0.5.0

From edc9be4d511f2678935bd906881792ceb3750fc0 Mon Sep 17 00:00:00 2001
From: Stefan Haun <tux@netz39.de>
Date: Tue, 18 Mar 2025 17:50:51 +0100
Subject: [PATCH 43/48] :arrow_up: Bump cleanURI-apigateway to 0.3.2

---
 roles/cleanuri/defaults/main.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/roles/cleanuri/defaults/main.yml b/roles/cleanuri/defaults/main.yml
index 81fbd00..e31dfb6 100644
--- a/roles/cleanuri/defaults/main.yml
+++ b/roles/cleanuri/defaults/main.yml
@@ -20,6 +20,6 @@ cleanuri_amqp_retrieval: "extractor"
 
 # Docker images
 cleanuri_image_webui: mrtux/cleanuri-webui:0.2.2
-cleanuri_image_apigateway: mrtux/cleanuri-apigateway:0.3.1
+cleanuri_image_apigateway: mrtux/cleanuri-apigateway:0.3.2
 cleanuri_image_canonizer: mrtux/cleanuri-canonizer:0.5.0
 cleanuri_image_extractor: mrtux/cleanuri-extractor:0.5.0

From 390d5015cb37b5c8015653a86705c5b0b2aa599d Mon Sep 17 00:00:00 2001
From: Stefan Haun <tux@netz39.de>
Date: Tue, 18 Mar 2025 17:51:12 +0100
Subject: [PATCH 44/48] :arrow_up: Bump cleanURI-canonizer to 0.5.2

---
 roles/cleanuri/defaults/main.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/roles/cleanuri/defaults/main.yml b/roles/cleanuri/defaults/main.yml
index e31dfb6..03cc065 100644
--- a/roles/cleanuri/defaults/main.yml
+++ b/roles/cleanuri/defaults/main.yml
@@ -21,5 +21,5 @@ cleanuri_amqp_retrieval: "extractor"
 # Docker images
 cleanuri_image_webui: mrtux/cleanuri-webui:0.2.2
 cleanuri_image_apigateway: mrtux/cleanuri-apigateway:0.3.2
-cleanuri_image_canonizer: mrtux/cleanuri-canonizer:0.5.0
+cleanuri_image_canonizer: mrtux/cleanuri-canonizer:0.5.2
 cleanuri_image_extractor: mrtux/cleanuri-extractor:0.5.0

From c564dd5df740847bf852eedb2750ed6b94149b5c Mon Sep 17 00:00:00 2001
From: Stefan Haun <tux@netz39.de>
Date: Tue, 18 Mar 2025 17:51:24 +0100
Subject: [PATCH 45/48] :arrow_up: Bump cleanURI-extractor to 0.5.2

---
 roles/cleanuri/defaults/main.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/roles/cleanuri/defaults/main.yml b/roles/cleanuri/defaults/main.yml
index 03cc065..c39d017 100644
--- a/roles/cleanuri/defaults/main.yml
+++ b/roles/cleanuri/defaults/main.yml
@@ -22,4 +22,4 @@ cleanuri_amqp_retrieval: "extractor"
 cleanuri_image_webui: mrtux/cleanuri-webui:0.2.2
 cleanuri_image_apigateway: mrtux/cleanuri-apigateway:0.3.2
 cleanuri_image_canonizer: mrtux/cleanuri-canonizer:0.5.2
-cleanuri_image_extractor: mrtux/cleanuri-extractor:0.5.0
+cleanuri_image_extractor: mrtux/cleanuri-extractor:0.5.2

From cd7109cac9c4c7cfbfd2e206ac843c164ff55af1 Mon Sep 17 00:00:00 2001
From: Stefan Haun <tux@netz39.de>
Date: Thu, 27 Mar 2025 11:34:37 +0100
Subject: [PATCH 46/48] :arrow_up: Bump cleanuri-canonizer to 0.5.3

---
 roles/cleanuri/defaults/main.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/roles/cleanuri/defaults/main.yml b/roles/cleanuri/defaults/main.yml
index c39d017..3dc4856 100644
--- a/roles/cleanuri/defaults/main.yml
+++ b/roles/cleanuri/defaults/main.yml
@@ -21,5 +21,5 @@ cleanuri_amqp_retrieval: "extractor"
 # Docker images
 cleanuri_image_webui: mrtux/cleanuri-webui:0.2.2
 cleanuri_image_apigateway: mrtux/cleanuri-apigateway:0.3.2
-cleanuri_image_canonizer: mrtux/cleanuri-canonizer:0.5.2
+cleanuri_image_canonizer: mrtux/cleanuri-canonizer:0.5.3
 cleanuri_image_extractor: mrtux/cleanuri-extractor:0.5.2

From 318c646515217d1a32f5cea465df23e49c5eda9c Mon Sep 17 00:00:00 2001
From: Stefan Haun <tux@netz39.de>
Date: Thu, 27 Mar 2025 11:34:52 +0100
Subject: [PATCH 47/48] :arrow_up: Bump cleanuri-extractor to 0.5.3

---
 roles/cleanuri/defaults/main.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/roles/cleanuri/defaults/main.yml b/roles/cleanuri/defaults/main.yml
index 3dc4856..73422b8 100644
--- a/roles/cleanuri/defaults/main.yml
+++ b/roles/cleanuri/defaults/main.yml
@@ -22,4 +22,4 @@ cleanuri_amqp_retrieval: "extractor"
 cleanuri_image_webui: mrtux/cleanuri-webui:0.2.2
 cleanuri_image_apigateway: mrtux/cleanuri-apigateway:0.3.2
 cleanuri_image_canonizer: mrtux/cleanuri-canonizer:0.5.3
-cleanuri_image_extractor: mrtux/cleanuri-extractor:0.5.2
+cleanuri_image_extractor: mrtux/cleanuri-extractor:0.5.3

From 801cd60f4de3f1ef60f8142d8394e0ad49451ccd Mon Sep 17 00:00:00 2001
From: Renovate Bot <accounts+renovatebot@netz39.de>
Date: Fri, 28 Mar 2025 15:18:04 +0000
Subject: [PATCH 48/48] Update renovate/renovate Docker tag to v39.220.1

---
 host_vars/pottwal.n39.eu/vars.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/host_vars/pottwal.n39.eu/vars.yml b/host_vars/pottwal.n39.eu/vars.yml
index d148293..854fb67 100644
--- a/host_vars/pottwal.n39.eu/vars.yml
+++ b/host_vars/pottwal.n39.eu/vars.yml
@@ -59,7 +59,7 @@ homebox_host_port: 8092
 homebox_domain_name: inventory.n39.eu
 homebox_image: ghcr.io/hay-kot/homebox:v0.10.3
 
-renovate_image: renovate/renovate:39.211.0
+renovate_image: renovate/renovate:39.220.1
 renovate_forgejo_pat: "{{ vault_renovate_forgejo_pat }}"
 renovate_github_pat: "{{ vault_renovate_github_pat }}"
 renovate_git_user: "Renovate Bot <accounts+renovatebot@netz39.de>"