diff --git a/README.md b/README.md
index e4412c5..491cd24 100644
--- a/README.md
+++ b/README.md
@@ -28,6 +28,6 @@ To set up a new HTTPS vhost, the following steps need to be taken:
 2. Create an external CNAME from this domain to `dyndns.n39.eu`.
 3. Create an internal DNS entry in the [Descartes DNS config](https://gitea.n39.eu/Netz39_Admin/config.descartes/src/branch/prepare/dns_dhcp.txt). This is usually an alias on an existing server.
 4. Add the entry to the [holmium playbook](holmium.yml).
-5. Set up Dehydrated and vhost on the target host, e.g. using `setup-http-site-proxy`.
+5. Set up Dehydrated and vhost on the target host, e.g. using `setup_http_site_proxy`.
 
 Do not forget to execute all playbooks with relevant changes.
diff --git a/holmium.yml b/holmium.yml
index 00c05fe..405f67e 100644
--- a/holmium.yml
+++ b/holmium.yml
@@ -6,7 +6,7 @@
     ansible_python_interpreter: /usr/bin/python3
 
   roles:
-    - role: nginx-https-ingress
+    - role: nginx_https_ingress
       vars:
         ingress:
           - server: kant
diff --git a/krypton.yml b/krypton.yml
index 5ca51d3..d8080c9 100644
--- a/krypton.yml
+++ b/krypton.yml
@@ -24,7 +24,7 @@
       vars:
         docker_data_root: "/srv/docker"
     - role: apache
-    - role: apache-letsencrypt  # Uses configuration from dehydrated setup
+    - role: apache_letsencrypt  # Uses configuration from dehydrated setup
     - role: ansible-role-dehydrated
       vars:
         dehydrated_contact_email: "{{ server_admin }}"
@@ -61,13 +61,13 @@
         pull: true
         env:
           LDAP_LOG_LEVEL: "256"
-          LDAP_ORGANISATION: "{{ldap_org}}"
-          LDAP_DOMAIN: "{{ldap_domain}}"
-          LDAP_BASE_DN: "{{ldap_base_dn}}"
+          LDAP_ORGANISATION: "{{ ldap_org }}"
+          LDAP_DOMAIN: "{{ ldap_domain }}"
+          LDAP_BASE_DN: "{{ ldap_base_dn }}"
           LDAP_READONLY_USER: "false"
 
-          LDAP_ADMIN_PASSWORD: "{{ldap_admin_password}}"
-#          LDAP_CONFIG_PASSWORD: "{{ldap_config_password}}"
+          LDAP_ADMIN_PASSWORD: "{{ ldap_admin_password }}"
+#          LDAP_CONFIG_PASSWORD: "{{ ldap_config_password }}"
 
           LDAP_RFC2307BIS_SCHEMA: "true"
 
@@ -127,7 +127,7 @@
 
     - name: Setup proxy site entities-validation.svc.n39.eu
       include_role:
-        name: setup-http-site-proxy
+        name: setup_http_site_proxy
       vars:
         site_name: entities-validation.svc.n39.eu
         proxy_port: "{{ entities_validation_svc_host_port }}"
diff --git a/platon.yml b/platon.yml
index 6fae250..1c5ccf3 100644
--- a/platon.yml
+++ b/platon.yml
@@ -138,7 +138,7 @@
         force: no
       register: wiringPi_download
 
-    - name: Install wiringPi library
+    - name: Install wiringPi library # noqa 503
       ansible.builtin.apt:
         state: present
         deb: "/home/{{ gatekeeper_user }}/wiringpi-latest.deb"
@@ -277,7 +277,7 @@
 
     - name: Copy sounds
       ansible.builtin.copy:
-        src: "files/platon/{{item}}"
+        src: "files/platon/{{ item }}"
         dest: "/usr/local/share/asterisk/sounds/n39/"
         owner: root
         group: root
diff --git a/pottwal.yml b/pottwal.yml
index c51d5b9..5f694f3 100644
--- a/pottwal.yml
+++ b/pottwal.yml
@@ -34,7 +34,7 @@
       vars:
         docker_data_root: "/srv/docker"
     - role: apache
-    - role: apache-letsencrypt  # Uses configuration from dehydrated setup
+    - role: apache_letsencrypt  # Uses configuration from dehydrated setup
     - role: ansible-role-dehydrated
       vars:
         dehydrated_contact_email: "{{ server_admin }}"
@@ -52,7 +52,7 @@
           - name: influx.n39.eu
           - name: uptime.n39.eu
     - role: penguineer.dehydrated_cron
-    - role: dd24-dyndns-cron
+    - role: dd24_dyndns_cron
       # variables are set in the inventory
     - role: cleanuri
       vars:
@@ -101,7 +101,7 @@
 
     - name: Setup proxy site gitea.n39.eu
       include_role:
-        name: setup-http-site-proxy
+        name: setup_http_site_proxy
       vars:
         site_name: "gitea.n39.eu"
         proxy_port: "{{ gitea_host_port }}"
@@ -135,7 +135,7 @@
 
     - name: Setup proxy site {{ shlink_domain_name }}
       include_role:
-        name: setup-http-site-proxy
+        name: setup_http_site_proxy
       vars:
         site_name: "{{ shlink_domain_name }}"
         proxy_port: "{{ shlink_host_port }}"
@@ -186,7 +186,7 @@
     - name: Setup proxy site {{ prosody_domain_name }}
       # point to static website for now
       include_role:
-        name: setup-http-site-proxy
+        name: setup_http_site_proxy
       vars:
         site_name: "{{ prosody_domain_name }}"
         proxy_port: "{{ jabber_host_port }}"
@@ -259,7 +259,7 @@
 
     - name: Setup proxy site pad.n39.eu
       include_role:
-        name: setup-http-site-proxy
+        name: setup_http_site_proxy
       vars:
         site_name: pad.n39.eu
         proxy_port: "{{ hedgedoc_host_port }}"
@@ -291,7 +291,7 @@
 
     - name: Setup proxy site influx.n39.eu
       include_role:
-        name: setup-http-site-proxy
+        name: setup_http_site_proxy
       vars:
         site_name: influx.n39.eu
         proxy_port: "{{ influxdb_host_port }}"
@@ -326,7 +326,7 @@
         detach: yes
         env:
           MYSQL_ROOT_PASSWORD: "{{ redmine_database_password }}"
-          MYSQL_DATABASE:  "{{redmine_database }}"
+          MYSQL_DATABASE:  "{{ redmine_database }}"
         volumes:
           - "{{ data_dir }}/redmine/mysql:/var/lib/mysql"
         networks:
@@ -354,7 +354,7 @@
 
     - name: Setup proxy site redmine.n39.eu
       include_role:
-        name: setup-http-site-proxy
+        name: setup_http_site_proxy
       vars:
         site_name: redmine.n39.eu
         proxy_port: "{{ redmine_host_port }}"
@@ -381,7 +381,7 @@
 
     - name: Setup proxy site uptime.n39.eu
       include_role:
-        name: setup-http-site-proxy
+        name: setup_http_site_proxy
       vars:
         site_name: uptime.n39.eu
         proxy_port: "{{ uptimekuma_host_port }}"
diff --git a/radon.yml b/radon.yml
index 26a17dd..52ad0bc 100644
--- a/radon.yml
+++ b/radon.yml
@@ -26,7 +26,7 @@
       vars:
         docker_data_root: "/srv/docker"
     - role: apache
-    - role: apache-letsencrypt  # Uses configuration from dehydrated setup
+    - role: apache_letsencrypt  # Uses configuration from dehydrated setup
     - role: ansible-role-dehydrated
       vars:
         dehydrated_contact_email: "{{ server_admin }}"
@@ -102,7 +102,7 @@
 
     - name: Setup proxy site nodered.n39.eu
       include_role:
-        name: setup-http-site-proxy
+        name: setup_http_site_proxy
       vars:
         site_name: "nodered.n39.eu"
         proxy_port: 9002
@@ -137,7 +137,7 @@
 
     - name: Setup proxy site rabbitmq.n39.eu
       include_role:
-        name: setup-http-site-proxy
+        name: setup_http_site_proxy
       vars:
         site_name: "rabbitmq.n39.eu"
         proxy_port: 15672
@@ -162,7 +162,7 @@
 
     - name: Setup proxy site pwr-meter-pulse-gw-19i.svc.n39.eu
       include_role:
-        name: setup-http-site-proxy
+        name: setup_http_site_proxy
       vars:
         site_name: "pwr-meter-pulse-gw-19i.svc.n39.eu"
         proxy_port: 9003
@@ -182,7 +182,7 @@
 
     - name: Setup proxy site brotherql-web.n39.eu
       include_role:
-        name: setup-http-site-proxy
+        name: setup_http_site_proxy
       vars:
         site_name: brotherql-web.n39.eu
         proxy_port: "{{ brotherql_host_port }}"
diff --git a/roles/apache-letsencrypt/defaults/main.yml b/roles/apache_letsencrypt/defaults/main.yml
similarity index 57%
rename from roles/apache-letsencrypt/defaults/main.yml
rename to roles/apache_letsencrypt/defaults/main.yml
index 4abe7fe..6967d14 100644
--- a/roles/apache-letsencrypt/defaults/main.yml
+++ b/roles/apache_letsencrypt/defaults/main.yml
@@ -1,3 +1,3 @@
-# Defaults for role apache-letsencrypt
+# Defaults for role apache_letsencrypt
 ---
 dehydrated_location: "/usr/local/etc/dehydrated"
diff --git a/roles/apache-letsencrypt/handlers/main.yml b/roles/apache_letsencrypt/handlers/main.yml
similarity index 66%
rename from roles/apache-letsencrypt/handlers/main.yml
rename to roles/apache_letsencrypt/handlers/main.yml
index 04949e9..abf4ea1 100644
--- a/roles/apache-letsencrypt/handlers/main.yml
+++ b/roles/apache_letsencrypt/handlers/main.yml
@@ -1,4 +1,4 @@
-# Handlers for role apache-letsencrypt
+# Handlers for role apache_letsencrypt
 ---
 - name: restart apache2
   service:
diff --git a/roles/apache-letsencrypt/tasks/main.yml b/roles/apache_letsencrypt/tasks/main.yml
similarity index 94%
rename from roles/apache-letsencrypt/tasks/main.yml
rename to roles/apache_letsencrypt/tasks/main.yml
index b51f3a7..6acb952 100644
--- a/roles/apache-letsencrypt/tasks/main.yml
+++ b/roles/apache_letsencrypt/tasks/main.yml
@@ -1,4 +1,4 @@
-# Tasks for role apache-letsencrypt
+# Tasks for role apache_letsencrypt
 ---
 - name: Create configuration for access to dehydrated location
   ansible.builtin.template:
diff --git a/roles/apache-letsencrypt/templates/letsencrypt-directory.conf.j2 b/roles/apache_letsencrypt/templates/letsencrypt-directory.conf.j2
similarity index 100%
rename from roles/apache-letsencrypt/templates/letsencrypt-directory.conf.j2
rename to roles/apache_letsencrypt/templates/letsencrypt-directory.conf.j2
diff --git a/roles/cleanuri/README.md b/roles/cleanuri/README.md
index 9ea7a75..8f06326 100644
--- a/roles/cleanuri/README.md
+++ b/roles/cleanuri/README.md
@@ -4,7 +4,7 @@
 
 ## Dependencies
 
-This role uses the [setup-http-site-proxy](../setup-http-site-proxy) role.
+This role uses the [setup_http_site_proxy](../setup_http_site_proxy) role.
 
 ## Use
 
diff --git a/roles/cleanuri/tasks/main.yml b/roles/cleanuri/tasks/main.yml
index 60c414e..68ba2cf 100644
--- a/roles/cleanuri/tasks/main.yml
+++ b/roles/cleanuri/tasks/main.yml
@@ -15,7 +15,7 @@
 
 - name: Setup proxy site for the CleanURI WebUI
   include_role:
-    name: setup-http-site-proxy
+    name: setup_http_site_proxy
   vars:
     site_name: "{{ cleanuri_ui_domain }}"
     proxy_port: "{{ cleanuri_ui_host_port }}"
@@ -73,7 +73,7 @@
 
 - name: Setup proxy site the CleanURI API Gateway
   include_role:
-    name: setup-http-site-proxy
+    name: setup_http_site_proxy
   vars:
     site_name: "{{ cleanuri_api_domain }}"
     proxy_port: "{{ cleanuri_api_host_port }}"
diff --git a/roles/dd24-dyndns-cron/defaults/main.yml b/roles/dd24_dyndns_cron/defaults/main.yml
similarity index 100%
rename from roles/dd24-dyndns-cron/defaults/main.yml
rename to roles/dd24_dyndns_cron/defaults/main.yml
diff --git a/roles/dd24-dyndns-cron/handlers/main.yml b/roles/dd24_dyndns_cron/handlers/main.yml
similarity index 100%
rename from roles/dd24-dyndns-cron/handlers/main.yml
rename to roles/dd24_dyndns_cron/handlers/main.yml
diff --git a/roles/dd24-dyndns-cron/tasks/main.yml b/roles/dd24_dyndns_cron/tasks/main.yml
similarity index 100%
rename from roles/dd24-dyndns-cron/tasks/main.yml
rename to roles/dd24_dyndns_cron/tasks/main.yml
diff --git a/roles/dd24-dyndns-cron/templates/dd24-dyndns.cron.j2 b/roles/dd24_dyndns_cron/templates/dd24-dyndns.cron.j2
similarity index 100%
rename from roles/dd24-dyndns-cron/templates/dd24-dyndns.cron.j2
rename to roles/dd24_dyndns_cron/templates/dd24-dyndns.cron.j2
diff --git a/roles/docker_setup/tasks/main.yml b/roles/docker_setup/tasks/main.yml
index 43c8614..98cfde5 100644
--- a/roles/docker_setup/tasks/main.yml
+++ b/roles/docker_setup/tasks/main.yml
@@ -34,7 +34,7 @@
     dest: /etc/apt/sources.list.d/docker.list
   register: apt_repo
 
-- name: Update package cache
+- name: Update package cache  # noqa 503
   ansible.builtin.apt:
     update_cache: true
   when: apt_repo.changed
diff --git a/roles/nginx-https-ingress/files/apt-preference-99nginx b/roles/nginx_https_ingress/files/apt-preference-99nginx
similarity index 100%
rename from roles/nginx-https-ingress/files/apt-preference-99nginx
rename to roles/nginx_https_ingress/files/apt-preference-99nginx
diff --git a/roles/nginx-https-ingress/files/nginx.conf b/roles/nginx_https_ingress/files/nginx.conf
similarity index 100%
rename from roles/nginx-https-ingress/files/nginx.conf
rename to roles/nginx_https_ingress/files/nginx.conf
diff --git a/roles/nginx-https-ingress/handlers/main.yml b/roles/nginx_https_ingress/handlers/main.yml
similarity index 100%
rename from roles/nginx-https-ingress/handlers/main.yml
rename to roles/nginx_https_ingress/handlers/main.yml
diff --git a/roles/nginx-https-ingress/tasks/main.yml b/roles/nginx_https_ingress/tasks/main.yml
similarity index 98%
rename from roles/nginx-https-ingress/tasks/main.yml
rename to roles/nginx_https_ingress/tasks/main.yml
index ff095d1..64884a5 100644
--- a/roles/nginx-https-ingress/tasks/main.yml
+++ b/roles/nginx_https_ingress/tasks/main.yml
@@ -33,7 +33,7 @@
     src: files/apt-preference-99nginx
     dest: /etc/apt/preferences.d/99nginx
 
-- name: Update package cache
+- name: Update package cache # noqa 503
   ansible.builtin.apt:
     update_cache: true
   when: apt_repo.changed
diff --git a/roles/nginx-https-ingress/templates/dehydrated-host.conf.j2 b/roles/nginx_https_ingress/templates/dehydrated-host.conf.j2
similarity index 100%
rename from roles/nginx-https-ingress/templates/dehydrated-host.conf.j2
rename to roles/nginx_https_ingress/templates/dehydrated-host.conf.j2
diff --git a/roles/nginx-https-ingress/templates/nginx.list.j2 b/roles/nginx_https_ingress/templates/nginx.list.j2
similarity index 100%
rename from roles/nginx-https-ingress/templates/nginx.list.j2
rename to roles/nginx_https_ingress/templates/nginx.list.j2
diff --git a/roles/nginx-https-ingress/templates/passthrough.conf.j2 b/roles/nginx_https_ingress/templates/passthrough.conf.j2
similarity index 100%
rename from roles/nginx-https-ingress/templates/passthrough.conf.j2
rename to roles/nginx_https_ingress/templates/passthrough.conf.j2
diff --git a/roles/setup-http-site-proxy/defaults/main.yml b/roles/setup_http_site_proxy/defaults/main.yml
similarity index 100%
rename from roles/setup-http-site-proxy/defaults/main.yml
rename to roles/setup_http_site_proxy/defaults/main.yml
diff --git a/roles/setup-http-site-proxy/handlers/main.yml b/roles/setup_http_site_proxy/handlers/main.yml
similarity index 100%
rename from roles/setup-http-site-proxy/handlers/main.yml
rename to roles/setup_http_site_proxy/handlers/main.yml
diff --git a/roles/setup-http-site-proxy/tasks/main.yml b/roles/setup_http_site_proxy/tasks/main.yml
similarity index 100%
rename from roles/setup-http-site-proxy/tasks/main.yml
rename to roles/setup_http_site_proxy/tasks/main.yml
diff --git a/roles/setup-http-site-proxy/templates/apache-docker-proxy-site.j2 b/roles/setup_http_site_proxy/templates/apache-docker-proxy-site.j2
similarity index 100%
rename from roles/setup-http-site-proxy/templates/apache-docker-proxy-site.j2
rename to roles/setup_http_site_proxy/templates/apache-docker-proxy-site.j2
diff --git a/tau.yml b/tau.yml
index cf81bb0..08d04a8 100644
--- a/tau.yml
+++ b/tau.yml
@@ -46,7 +46,7 @@
 
     - name: Setup proxy site testredmine.netz39.de
       include_role:
-        name: setup-http-site-proxy
+        name: setup_http_site_proxy
       vars:
         site_name: testredmine.netz39.de
         proxy_port: 9004
@@ -69,7 +69,7 @@
 
     - name: Setup proxy site mysql.adm.netz39.de
       include_role:
-        name: setup-http-site-proxy
+        name: setup_http_site_proxy
       vars:
         site_name: mysql.adm.netz39.de
         proxy_port: 9001
@@ -109,7 +109,7 @@
 
     - name: Setup proxy site for the Docker Registry
       include_role:
-        name: setup-http-site-proxy
+        name: setup_http_site_proxy
       vars:
         site_name: "{{ docker_registry_domain }}"
         proxy_port: "{{ docker_registry_port }}"
@@ -147,7 +147,7 @@
 
     - name: Setup proxy site for Dokuwiki
       include_role:
-        name: setup-http-site-proxy
+        name: setup_http_site_proxy
       vars:
         site_name: "{{ dokuwiki_domain }}"
         proxy_port: "{{ dokuwiki_port }}"