Repository: ls1intum/artemis-ansible-collection
Pull request #136: `Development`: Enhance documentation
Author: login: Hialus
Created: 2025-05-02T14:03:12Z | Merged: 2025-05-09T14:07:40Z

Update README files to improve documentation and provide usage examples.

* **roles/artemis/README.md**
  - Add a brief description of the role and its purpose.
  - Add a "Configuration" section with detailed instructions on how to configure the role, including required variables and their values.
  - Add an "Example usage" section with a sample playbook.
  - Remove mentions of gitlab/bitbucket/bamboo/jira and refer to LocalVC and LocalCI instead.
  - Add a note for Iris configuration.
  - Add example values for each property.
  - Merge the role variables and configuration sections.

* **roles/broker/README.md**
  - Add a brief description of the role and its purpose.
  - Add a "Configuration" section with detailed instructions on how to configure the role, including required variables and their values.
  - Add an "Example usage" section with a sample playbook.
  - Merge the role variables and configuration sections.

* **roles/db_backup/README.md**
  - Add a brief description of the role and its purpose.
  - Add an "Example usage" section with a sample playbook.
  - Merge the role variables and configuration sections.

* **roles/firewall/README.md**
  - Add a brief description of the role and its purpose.
  - Add an "Example usage" section with a sample playbook.
  - Merge the role variables and configuration sections.

* **roles/jenkins/README.md**
  - Add a brief description of the role and its purpose.
  - Add a "Configuration" section with detailed instructions on how to configure the role, including required variables and their values.
  - Add an "Example usage" section with a sample playbook.
  - Merge the role variables and configuration sections.

* **roles/legal/README.md**
  - Add a brief description of the role and its purpose.
  - Add a "Configuration" section with detailed instructions on how to configure the role, including required variables and their values.
  - Add an "Example usage" section with a sample playbook.
  - Merge the role variables and configuration sections.

* **roles/mysqld_exporter/README.md**
  - Add a brief description of the role and its purpose.
  - Add a "Configuration" section with detailed instructions on how to configure the role, including required variables and their values.
  - Add an "Example usage" section with a sample playbook.
  - Merge the role variables and configuration sections.

* **roles/proxy/README.md**
  - Add a brief description of the role and its purpose.
  - Add a "Configuration" section with detailed instructions on how to configure the role, including required variables and their values.
  - Add an "Example usage" section with a sample playbook.
  - Merge the role variables and configuration sections.

* **roles/pyris/README.md**
  - Add a brief description of the role and its purpose.
  - Add a "Configuration" section with detailed instructions on how to configure the role, including required variables and their values.
  - Add an "Example usage" section with a sample playbook.
  - Merge the role variables and configuration sections.

* **roles/registry/README.md**
  - Add a brief description of the role and its purpose.
  - Add a "Configuration" section with detailed instructions on how to configure the role, including required variables and their values.
  - Add an "Example usage" section with a sample playbook.
  - Merge the role variables and configuration sections.

* **roles/storage_client/README.md**
  - Add a brief description of the role and its purpose.
  - Add a "Configuration" section with detailed instructions on how to configure the role, including required variables and their values.
  - Add an "Example usage" section with a sample playbook.
  - Merge the role variables and configuration sections.

---

For more details, open the [Copilot Workspace session](https://copilot-workspace.githubnext.com/ls1intum/artemis-ansible-collection/pull/136?shareId=22a9e57f-2dd6-4e74-a116-dab80f2a05b7).

<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit

- **Documentation**
  - All role README files were extensively revised and expanded for improved clarity, structure, and completeness.
  - Added detailed configuration sections with explicit variable lists, descriptions, and example values for each role.
  - Introduced "Example Usage" sections with sample Ansible playbook snippets across all roles.
  - Corrected formatting, grammar, and minor typographical errors throughout the documentation.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->


Diff:
diff --git a/roles/artemis/README.md b/roles/artemis/README.md
index 48f9f2d8..49c7e106 100644
--- a/roles/artemis/README.md
+++ b/roles/artemis/README.md
@@ -1,116 +1,66 @@
-Artemis
-=========
+# Artemis
 
-This role installs artemis on a host. The role supports single node installations as well as multi node installations.
+This role installs Artemis on a host. The role supports single node installations as well as multi node installations.
+
+## Role Variables and Configuration
 
-Role Variables
---------------
 Default variables can be found in the `defaults/main.yml` file.
 
 ### Variables that have to be configured for a single node installation:
 
 ```
-artemis_server_url: "https://artemis.example.de"
-artemis_database_password: #FIXME
-
-artemis_internal_admin_password: #FIXME
+artemis_server_url: "https://artemis.example.com"
+artemis_database_password: "your_database_password"
 
-proxy_ssl_certificate_path: #FIXME
-proxy_ssl_certificate_key_path: #FIXME
+artemis_internal_admin_password: "your_admin_password"
 
-artemis_jhipster_jwt: #FIXME
+proxy_ssl_certificate_path: "/path/to/ssl_certificate"
+proxy_ssl_certificate_key_path: "/path/to/ssl_certificate_key"
 
+artemis_jhipster_jwt: "your_jwt_secret"
 ```
 
 The JWT secret can be generated with: `openssl rand -base64 64 | tr -d '\n'`.
 
-
 ### Additional Variables for external systems
-To configure LDAP access for artemis, add the following variables:
+
+To configure LDAP access for Artemis, add the following variables:
 ```
 ldap:
   url: "ldaps://iauth.tum.de:636"
   user_dn: "cn=TUINI01-Artemis,ou=bindDNs,ou=iauth,dc=tum,dc=de"
   base: "ou=users,ou=data,ou=prod,ou=iauth,dc=tum,dc=de"
-  password:
+  password: "your_ldap_password"
 ```
----
-
-To configure Jira as user management server add:
 
+To allow internal user registration:
 ```
 user_management:
-  jira:
-    url:
-    user:
-    password:
-    admin_group: # Jira group that will have admin access in the artemis web ui
-```
-
-To allow internal user registration: 
-```
-user_management: 
-  registration: 
+  registration:
     allowed_email_pattern:  ([a-zA-Z0-9_\-\.\+]+)@((tum\.de)|(in\.tum\.de)|(mytum\.de))
     allowed_email_pattern_readable: '@tum.de, @in.tum.de, @mytum.de'
     cleanup_time_minutes: 2
 ```
----
-
-Bitbucket configuration:
-```
-
-bitbucket_hostname: bitbucket.example.com
-version_control:
-  bitbucket:
-    url: "https://{{ bitbucket_hostname }}"
-    ssh_url: "ssh://git@{{ bitbucket_hostname }}:7999"
-    token:
-```
----
-
-Bamboo configuration:
-```
-continuous_integration:
-  bamboo:
-    url:
-    token:
-    bitbucket_link_name:
-    result_plugin_token:
-```
----
-
-Gitlab configuration:
-```
-version_control:
 
-  gitlab:
-    url: 
-    user: 
-    password: 
-    token: # Access token for $user
-    ci_token: # Jenkins secret push token
-    health_api_token: # Access token for health API
-    ssh_url: # Full SSH clone URL 
+LocalVC configuration:
 ```
----
-
-
-Jenkins configuration:
+localvc:
+  url: "https://artemis.example.com"
+  repo_storage_base_path: "/path/to/repo_storage"
+  use_version_control_access_token: false
+  ssh_key_path: "/opt/artemis/ssh-keys" # Key path for the SSH host keys
+  build_agent_use_ssh: true # Setting whether SSH should be used.
+  ssh_url: "ssh://git@artemis.example.com:7921/" # URL template for SSH clone operations.
+  build_agent_git_credentials:
+    user: "build_agent_user"
+    password: "build_agent_password"
+  user: "localvc_user"
+  password: "localvc_password"
 ```
-  jenkins:
-    url: 
-    user: 
-    password:
-    secret_push_token:
-    vcs_credentials:
-    artemis_auth_token_key:
-    artemis_auth_token_value:
-```
----
 
 LocalCI configuration:
 ```
+continuous_integration:
   localci:
     is_core_node: true
     is_build_agent: true
@@ -124,62 +74,68 @@ LocalCI configuration:
       expiry_days: 3
       schedule_time: "0 0 4 * * *"
 ```
----
 
+Jenkins configuration:
+```
+continuous_integration:
+  jenkins:
+    url: "https://jenkins.example.com"
+    user: "jenkins_user"
+    password: "jenkins_password"
+    secret_push_token: "jenkins_secret_push_token"
+    vcs_credentials: "jenkins_vcs_credentials"
+    artemis_auth_token_key: "jenkins_artemis_auth_token_key"
+    artemis_auth_token_value: "jenkins_artemis_auth_token_value"
+```
 
 Athena configuration:
 ```
 athena:
-  url:
-  secret:
-  restricted_modules: # optional parameter to restrict access to specific modules, e.g. module_text_llm,module_programming_llm
+  url: "https://athena.example.com"
+  secret: "athena_secret"
+  restricted_modules: "module_text_llm,module_programming_llm" # optional parameter to restrict access to specific modules
 ```
----
 
-Apollon configuration:
+Iris configuration:
 ```
-apollon_url: #https://apollon.ase.in.tum.de/api/converter
+iris:
+  url: "https://iris.example.com"
+  secret: "iris_secret"
 ```
----
 
 Mail configuration:
 ```
 mail:
-  host:
-  port:
-  user:
-  password:
-  protocol:
-  ssl_trust:
+  host: "smtp.example.com"
+  port: 587
+  user: "smtp_user"
+  password: "smtp_password"
+  protocol: "smtp"
+  ssl_trust: "smtp.example.com"
 ```
 
----
-
 LTI configuration:
 ```
 lti:
-  oauth_secret:
+  oauth_secret: "lti_oauth_secret"
 ```
 
-### Additional Variables for multi node installtions
+### Additional Variables for multi node installations
 
 Registry Configuration:
 ```
-artemis_jhipster_registry_password: #FIXME Multinode
-
+artemis_jhipster_registry_password: "your_registry_password" # Set this to the password for the JHipster registry in a multi-node setup
 ```
 The Token can be generated with: `openssl rand -base64 64`
 
----
-
-
-Active MQ configuration
+Active MQ configuration:
 ```
 broker:
   url: "fcfe:0:0:0:0:0:b:1" # Default address in the wireguard network
-  username: brokeruser
-  password: #FIXME
-
+  username: "brokeruser"
+  password: "your_broker_password"
 ```
 
+## Example Usage
 
+Please refer to https://github.com/ls1intum/artemis-ansible for concrete examples.
diff --git a/roles/broker/README.md b/roles/broker/README.md
index ff956d10..094cf19e 100644
--- a/roles/broker/README.md
+++ b/roles/broker/README.md
@@ -1,18 +1,37 @@
-Role Name
-=========
+# Broker
 
-This role installes activemq and configures it for the use with artemis.
+This role installs ActiveMQ and configures it for use with Artemis.
 
-Role Variables
---------------
+## Configuration
+
+To configure the role, you need to set the required variables in your Ansible playbook or inventory. The following variables are required:
+
+- `broker.url`: The hostname of the broker.
+- `broker.username`: The username for the broker.
+- `broker.password`: The password for the broker.
 
 Default variables can be found in the `defaults/main.yml` file.
 
-You have to configure the follwoing varaibles in your ansible `group_vars`:
+### Variables that have to be configured:
 
 ```
 broker:
-  url: # Broker hostname (Only used in the Artemis role)
-  username: # Broker username (Also used by the Artemis role)
-  password: # Broker password (Also used by the Artemis role)
-```
\ No newline at end of file
+  url: "broker.example.com" # Broker hostname (Only used in the Artemis role)
+  username: "brokeruser" # Broker username (Also used by the Artemis role)
+  password: "your_broker_password" # Broker password (Also used by the Artemis role)
+```
+
+## Example Usage
+
+Here is an example playbook:
+
+```yaml
+- hosts: broker
+  roles:
+    - role: ls1intum.broker
+      vars:
+        broker:
+          url: "broker.example.com"
+          username: "brokeruser"
+          password: "your_broker_password"
+```
diff --git a/roles/db_backup/README.md b/roles/db_backup/README.md
index 21d592be..2498df2c 100644
--- a/roles/db_backup/README.md
+++ b/roles/db_backup/README.md
@@ -1,11 +1,12 @@
-# DB Backup 
+# DB Backup
 
 This role adds a cron job to the db host which creates regular DB backups.
 
-## Configuration 
-The default configuration will create a DB backup every day at 4:30: 
+## Configuration
 
-```yml 
+The default configuration will create a DB backup every day at 4:30:
+
+```yml
 artemis_database_dbname: artemis
 artemis_database_backup_dir: /opt/backup
 artemis_database_backup_script_path: /opt/backup.sh
@@ -13,3 +14,19 @@ artemis_database_backup_script_path: /opt/backup.sh
 artemis_database_backup_minute: 30
 artemis_database_backup_hour: 4
 ```
+
+## Example Usage
+
+Here is an example playbook:
+
+```yaml
+- hosts: db
+  roles:
+    - role: ls1intum.db_backup
+      vars:
+        artemis_database_dbname: "artemis"
+        artemis_database_backup_dir: "/opt/backup"
+        artemis_database_backup_script_path: "/opt/backup.sh"
+        artemis_database_backup_minute: 30
+        artemis_database_backup_hour: 4
+```
diff --git a/roles/firewall/README.md b/roles/firewall/README.md
index f2fb8ed7..0a288d23 100644
--- a/roles/firewall/README.md
+++ b/roles/firewall/README.md
@@ -1,14 +1,20 @@
-Role Name
-=========
+# Firewall
 
-This role is responsible to configure the firewalls
+This role is responsible for configuring the firewalls.
 
-Role Variables
---------------
+## Configuration
+
+To configure the role, you need to set the required variables in your Ansible playbook or inventory. The following variables are required:
+
+- `management_network_ipv4`: The IPv4 management network used to allow SSH / HTTP access to hosts and services.
+- `management_network_ipv6`: The IPv6 management network used to allow SSH / HTTP access to hosts and services.
+- `monitoring_host_ipv4`: The IPv4 address of the monitoring service.
+- `monitoring_host_ipv6`: The IPv6 address of the monitoring service.
+- `firewall_hostgroup`: The firewall rule set to be applied. Can be 'registry', 'nodes', 'proxy' or left blank for default rules.
 
 Default variables can be found in the `defaults/main.yml` file.
 
-You have to configure the follwoing varaibles:
+### Variables that have to be configured:
 
 ```
 # Management Networks - used to allow SSH / HTTP access to Hosts and services
@@ -20,19 +26,20 @@ monitoring_host_ipv4: "131.159.89.160"
 monitoring_host_ipv6: "2a09:80c0:89:1::32"
 ```
 
-You have to configure a special varaible to select the firewall rule set which is applied:
+You have to configure a special variable to select the firewall rule set which is applied:
 
 ```
 firewall_hostgroup:  # Can be 'registry', 'nodes', 'proxy' or left blank for default rules
 ```
 
-## Example usage:
+## Example Usage
 
-Example playbook for a registry:
+Here is an example playbook for a registry:
 
-```
+```yaml
+- hosts: registry
+  roles:
     - role: ls1intum.artemis.firewall
-      tags: firewall
       vars:
         firewall_hostgroup: registry
 ```
diff --git a/roles/jenkins/README.md b/roles/jenkins/README.md
index d044f6d3..445cbc23 100644
--- a/roles/jenkins/README.md
+++ b/roles/jenkins/README.md
@@ -1,16 +1,39 @@
-Role Name
-=========
+# Jenkins
 
-This role installs Jenkins inside a Docker container for the use with artemis.
+This role installs Jenkins inside a Docker container for the use with Artemis.
 
-Role Variables
---------------
+## Configuration
+
+To configure the role, you need to set the required variables in your Ansible playbook or inventory. The following variables are required:
+
+- `jenkins_internal_port`: The internal port for Jenkins.
+- `jenkins_data_dir`: The data directory for Jenkins.
+- `jenkins_docker_tag`: The Docker tag for Jenkins.
 
 Default variables can be found in the `defaults/main.yml` file.
 
-The initial password will be printed by the role.
+### Variables that have to be configured:
+
+```
+jenkins_internal_port: 8082
+jenkins_data_dir: "/opt/jenkins/data"
+jenkins_docker_tag: "lts"
+```
 
+## Example Usage
 
-An example playbook can be found in the `examples` folder.
+Here is an example playbook:
+
+```yaml
+- hosts: jenkins
+  roles:
+    - role: ls1intum.jenkins
+      vars:
+        jenkins_internal_port: 8082
+        jenkins_data_dir: "/opt/jenkins/data"
+        jenkins_docker_tag: "lts"
+```
+
+The initial password will be printed by the role.
 
-A reverse proxy for Jenkins should be installed for handling certificates, e.g. using the `ls1intum.artemis.proxy` role.
\ No newline at end of file
+A reverse proxy for Jenkins should be installed for handling certificates, e.g. using the `ls1intum.artemis.proxy` role.
diff --git a/roles/legal/README.md b/roles/legal/README.md
index 19b9face..0a8d099b 100644
--- a/roles/legal/README.md
+++ b/roles/legal/README.md
@@ -1,4 +1,25 @@
-# Artemis Legal Documents setup 
+# Legal
 
-This roles manages the legal documents needed by Artemis. 
+This role manages the legal documents needed by Artemis.
 
+## Configuration
+
+To configure the role, you need to set the required variables in your Ansible playbook or inventory. The following variables are required:
+
+- `artemis_legal_path`: The path where the legal documents will be stored. Default is `/opt/artemis/legal`.
+- `artemis_user`: The user who will own the legal documents. Default is `artemis`.
+- `artemis_group`: The group who will own the legal documents. Default is `artemis`.
+
+## Example Usage
+
+Here is an example playbook:
+
+```yaml
+- hosts: all
+  roles:
+    - role: ls1intum.legal
+      vars:
+        artemis_legal_path: "/opt/artemis/legal"
+        artemis_user: "artemis"
+        artemis_group: "artemis"
+```
diff --git a/roles/mysqld_exporter/README.md b/roles/mysqld_exporter/README.md
index 66f5517d..f23546a6 100644
--- a/roles/mysqld_exporter/README.md
+++ b/roles/mysqld_exporter/README.md
@@ -1,17 +1,44 @@
-MySQLd Exporter
-=========
+# MySQLd Exporter
 
-Role to setup the [MySQLd exporter](https://github.com/prometheus/mysqld_exporter) for prometheus.
-It creates a user on the MySQL database on the host, which is needed for scraping the data.
+This role sets up the [MySQLd exporter](https://github.com/prometheus/mysqld_exporter) for Prometheus. It creates a user on the MySQL database on the host, which is needed for scraping the data.
 
+## Configuration
 
-Role Variables
---------------
+To configure the role, you need to set the required variables in your Ansible playbook or inventory. The following variables are required:
+
+- `mysql_exporter_user`: The username for the MySQL exporter.
+- `mysql_exporter_password`: The password for the MySQL exporter.
+- `mysql_exporter_version`: The version of the MySQL exporter.
+- `mysql_exporter_dsn`: The Data Source Name (DSN) for the MySQL exporter.
 
 Default variables can be found in the `defaults/main.yml` file.
 
-Important: Change database user password!
+### Variables that have to be configured:
+
+```
+mysql_exporter_user: "exporter"
+mysql_exporter_password: "your_exporter_password"
+mysql_exporter_version: "0.14.0"
+mysql_exporter_dsn: "{{ mysql_exporter_user }}:{{ mysql_exporter_password }}@(localhost:3306)/"
+```
+
+Important: Change the database user password!
+
+## Example Usage
+
+Here is an example playbook:
+
+```yaml
+- hosts: db
+  roles:
+    - role: ls1intum.mysqld_exporter
+      vars:
+        mysql_exporter_user: "exporter"
+        mysql_exporter_password: "your_exporter_password"
+        mysql_exporter_version: "0.14.0"
+        mysql_exporter_dsn: "exporter:your_exporter_password@(localhost:3306)/"
+```
+
+## Dependencies
 
-Dependencies
---------------
-Install all with ```ansible-galaxy install -r meta/requirements.yml´´´
+Install all with ```ansible-galaxy install -r meta/requirements.yml```
diff --git a/roles/proxy/README.md b/roles/proxy/README.md
index 3b4fb5d5..ed0c8c81 100644
--- a/roles/proxy/README.md
+++ b/roles/proxy/README.md
@@ -1,11 +1,116 @@
-Role Name
-=========
+# Proxy
 
-Role to setup nginx as proxy or load balancer for artemis
+This role sets up nginx as a proxy or load balancer for Artemis.
 
+## Configuration
 
-Role Variables
---------------
+To configure the role, you need to set the required variables in your Ansible playbook or inventory. The following variables are required:
+
+- `servers`: A list of server configurations, including name, SSL certificate path, SSL certificate key path, and whether it is the default server.
+- `redirects`: A list of redirect configurations, including name, SSL certificate path, SSL certificate key path, whether it is the default server, and the target URL.
+- `proxy_available_nodes`: A list of nodes for load balancing, either defined as a host-group or manually listed.
+- `proxy_target_port`: The service port on nodes for load balancing.
+- `proxy_forward_ssh`: Whether to enable port forwarding for SSH Git communication with Artemis ICL LocalVC.
+- `proxy_node_protocol`: The protocol used to communicate with nodes (either http or https).
+- `proxy_mailto`: A valid mail address used for the /mailto endpoint.
+- `proxy_resolver`: The resolver configuration for nginx.
+- `proxy_worker_rlmmiit_nofile`: The worker_rlimit_nofile setting for nginx.
+- `proxy_worker_connections`: The worker_connections setting for nginx.
+- `proxy_server_names_hash_bucket_size`: The server_names_hash_bucket_size setting for nginx.
+- `proxy_generate_dh_param`: Whether to generate DH parameters.
+- `proxy_send_timeout`: The send timeout for nginx.
+- `proxy_read_timeout`: The read timeout for nginx.
+- `fastcgi_send_timeout`: The send timeout for FastCGI.
+- `fastcgi_read_timeout`: The read timeout for FastCGI.
 
 Default variables can be found in the `defaults/main.yml` file.
 
+### Variables that have to be configured:
+
+```
+servers: []
+#   - name:
+#     ssl_certificate_path:
+#     ssl_certificate_key_path:
+#     default_server: false
+
+redirects: []
+#   - name:
+#     ssl_certificate_path:
+#     ssl_certificate_key_path:
+#     default_server: true
+#     to: "{{ artemis_url }}"
+
+# Nodes for load balancing; Either define a host-group or manually list all nodes
+# proxy_available_nodes: "{{ groups.artemisnodes }}" # will not work anymore
+proxy_available_nodes:
+  - hostname: 127.0.0.1
+
+# Service Port on nodes for load balancing; If differing for each node fall back to
+# manual list of proxy_available_nodes and comment out proxy_target_port variable declaration
+proxy_target_port: 8080
+
+# Port forwarding configuration of Artemis nodes for SSH Git communication with Artemis ICL LocalVC
+proxy_forward_ssh: true
+
+# Protocol used to communicate with nodes (either http or https)
+proxy_node_protocol: http
+
+# Used for the /mailto enpoint - Has to be a valid mail address.
+proxy_mailto:
+# /etc/nginx/sites-available/artemis.conf
+# Uncomment to change load balancing method from default (which is round robin)
+# Can be "least_conn" or "ip_hash"
+# proxy_load_balancing_method: ip_hash
+
+proxy_resolver: "127.0.0.53 valid=300s"
+
+proxy_worker_rlmmiit_nofile: 30000
+proxy_worker_connections: 20000
+proxy_server_names_hash_bucket_size: 256
+
+proxy_generate_dh_param: true
+
+proxy_send_timeout: "900s"
+proxy_read_timeout: "900s"
+fastcgi_send_timeout: "900s"
+fastcgi_read_timeout: "900s"
+```
+
+## Example Usage
+
+Here is an example playbook:
+
+```yaml
+- hosts: proxy
+  roles:
+    - role: ls1intum.proxy
+      vars:
+        servers:
+          - name: "example.com"
+            ssl_certificate_path: "/etc/ssl/certs/example.com.crt"
+            ssl_certificate_key_path: "/etc/ssl/private/example.com.key"
+            default_server: true
+        redirects:
+          - name: "redirect.example.com"
+            ssl_certificate_path: "/etc/ssl/certs/redirect.example.com.crt"
+            ssl_certificate_key_path: "/etc/ssl/private/redirect.example.com.key"
+            default_server: false
+            to: "https://example.com"
+        proxy_available_nodes:
+          - hostname: "node1.example.com"
+          - hostname: "node2.example.com"
+        proxy_target_port: 8080
+        proxy_forward_ssh: true
+        proxy_node_protocol: http
+        proxy_mailto: "admin@example.com"
+        proxy_resolver: "127.0.0.53 valid=300s"
+        proxy_worker_rlmmiit_nofile: 30000
+        proxy_worker_connections: 20000
+        proxy_server_names_hash_bucket_size: 256
+        proxy_generate_dh_param: true
+        proxy_send_timeout: "900s"
+        proxy_read_timeout: "900s"
+        fastcgi_send_timeout: "900s"
+        fastcgi_read_timeout: "900s"
+```
diff --git a/roles/pyris/README.md b/roles/pyris/README.md
index 17cc100c..26467608 100644
--- a/roles/pyris/README.md
+++ b/roles/pyris/README.md
@@ -1,22 +1,42 @@
-Pyris
-=========
+# Pyris
 
-This role installs Pyris on a host. The role supports single node installations via Docker
+This role installs Pyris on a host. The role supports single node installations via Docker.
+
+## Configuration
+
+To configure the role, you need to set the required variables in your Ansible playbook or inventory. The following variables are required:
+
+- `pyris_deployment_user_public_key`: The public key for the deployment user.
+- `pyris_config`: The configuration for Pyris.
+- `proxy_ssl_certificate_path`: The path to the SSL certificate for the proxy.
+- `proxy_ssl_certificate_key_path`: The path to the SSL certificate key for the proxy.
 
-Role Variables
---------------
 Default variables can be found in the `defaults/main.yml` file.
 
 ### Variables that have to be configured for a single node installation:
 
 ```
-pyris_deployment_user_public_key: #FIXME
-
-pyris_config: #FIXME
+pyris_deployment_user_public_key: "your_public_key"
 
-proxy_ssl_certificate_path: #FIXME
-proxy_ssl_certificate_key_path: #FIXME
+pyris_config: "your_pyris_config"
 
+proxy_ssl_certificate_path: "/path/to/ssl_certificate"
+proxy_ssl_certificate_key_path: "/path/to/ssl_certificate_key"
 ```
 
-pyris_config is the configuration for Pyris. See https://github.com/ls1intum/Pyris for details
\ No newline at end of file
+pyris_config is the configuration for Pyris. See https://github.com/ls1intum/Pyris for details.
+
+## Example Usage
+
+Here is an example playbook for a single node installation:
+
+```yaml
+- hosts: pyris
+  roles:
+    - role: ls1intum.pyris
+      vars:
+        pyris_deployment_user_public_key: "your_public_key"
+        pyris_config: "your_pyris_config"
+        proxy_ssl_certificate_path: "/path/to/ssl_certificate"
+        proxy_ssl_certificate_key_path: "/path/to/ssl_certificate_key"
+```
diff --git a/roles/registry/README.md b/roles/registry/README.md
index 2c8462b2..97ab6d28 100644
--- a/roles/registry/README.md
+++ b/roles/registry/README.md
@@ -1,18 +1,34 @@
-Role Name
-=========
+# Registry
 
 This role installs the jhipster registry and configures it for the use with artemis.
 
-Role Variables
---------------
+## Configuration
+
+To configure the role, you need to set the required variables in your Ansible playbook or inventory. The following variables are required:
+
+- `artemis_jhipster_jwt`: The JWT secret for Artemis.
+- `artemis_jhipster_registry_password`: The password for the JHipster registry.
 
 Default variables can be found in the `defaults/main.yml` file.
 
-You have to configure the follwoing varaibles in your ansible `group_vars`:
+### Variables that have to be configured:
 
 ```
-artemis_jhipster_jwt: #(Also used by the Artemis role)
-artemis_jhipster_registry_password: # (Also used by the Artemis role)
+artemis_jhipster_jwt: "your_jwt_secret"
+artemis_jhipster_registry_password: "your_registry_password"
 ```
 
 The Token can be generated with: `openssl rand -base64 64`. Consult the artemis role readme for details.
+
+## Example Usage
+
+Here is an example playbook:
+
+```yaml
+- hosts: registry
+  roles:
+    - role: ls1intum.registry
+      vars:
+        artemis_jhipster_jwt: "your_jwt_secret"
+        artemis_jhipster_registry_password: "your_registry_password"
+```
diff --git a/roles/storage_client/README.md b/roles/storage_client/README.md
index 09f6d59a..f7091d4c 100644
--- a/roles/storage_client/README.md
+++ b/roles/storage_client/README.md
@@ -1,8 +1,21 @@
-# Node storage setup role
+# Storage Client
 
-This role adds an systemd service which automatically mounts the defined NFS export to /etc/storage.
+This role adds a systemd service which automatically mounts the defined NFS export to /mnt/storage.
 
-Variables that can be configured (See `defaults/main.yml`:
+## Configuration
+
+To configure the role, you need to set the required variables in your Ansible playbook or inventory. The following variables are required:
+
+- `artemis_uid`: The UID for the Artemis user.
+- `artemis_gid`: The GID for the Artemis group.
+- `artemis_user`: The name of the Artemis user.
+- `artemis_group`: The name of the Artemis group.
+- `storage_server_address`: The address of the storage server.
+- `storage_export`: The path to the NFS export on the storage server.
+
+Default variables can be found in the `defaults/main.yml` file.
+
+### Variables that have to be configured:
 
 ```
 artemis_uid: 1337
@@ -11,8 +24,22 @@ artemis_user: artemis
 artemis_group: artemis
 
 storage_server_address: "fcfe:0:0:0:0:0:9:1" # This is the default address for the storage server in the wireguard network
-storage_export:  /srv/artemis
+storage_export: /srv/artemis
 ```
 
-If you change some of these variables, make sure to add them to you artemis `group_var`. These variables are shared between the `storage-client` and `storage-provider` role.
+## Example Usage
+
+Here is an example playbook:
 
+```yaml
+- hosts: storage_client
+  roles:
+    - role: ls1intum.storage_client
+      vars:
+        artemis_uid: 1337
+        artemis_gid: 1337
+        artemis_user: artemis
+        artemis_group: artemis
+        storage_server_address: "fcfe:0:0:0:0:0:9:1"
+        storage_export: "/srv/artemis"
+```
diff --git a/roles/storage_provider/README.md b/roles/storage_provider/README.md
index f0453fe7..f4db3b7a 100644
--- a/roles/storage_provider/README.md
+++ b/roles/storage_provider/README.md
@@ -1,14 +1,48 @@
-Role Name
-=========
+# Storage Provider
 
-This role creates an NFS export which is used by the artemis nodes to share data (repositories/uploads etc.)
+This role creates an NFS export which is used by the artemis nodes to share data (repositories/uploads etc.). By default, the wireguard interfaces are used for NFS. This ensures encrypted traffic and client authorization.
 
-By default the wireguard interfaces are used for NFS. This ensures encrypted traffic and client authorization.
+## Configuration
 
+To configure the role, you need to set the required variables in your Ansible playbook or inventory. The following variables are required:
 
-Role Variables
---------------
-See `defaults/main.yml`.
+- `artemis_uid`: The UID for the Artemis user.
+- `artemis_gid`: The GID for the Artemis group.
+- `artemis_user`: The name of the Artemis user.
+- `artemis_group`: The name of the Artemis group.
+- `storage_export`: The path to the NFS export.
+- `storage_network`: The network address for the storage.
+- `storage_server_address`: The address of the storage server.
 
-If you change some of these variables, make sure to add them to you artemis `group_var`. These variables are shared between the `storage-client` and `storage-provider` role.
+Default variables can be found in the `defaults/main.yml` file.
 
+### Variables that have to be configured:
+
+```
+artemis_uid: 1337
+artemis_gid: 1337
+artemis_user: artemis
+artemis_group: artemis
+
+storage_export: /srv/artemis
+storage_network: "fcfe:0:0:0:0:0:0:0/96"
+storage_server_address: "fcfe:0:0:0:0:0:9:1"
+```
+
+## Example Usage
+
+Here is an example playbook:
+
+```yaml
+- hosts: storage_provider
+  roles:
+    - role: ls1intum.storage_provider
+      vars:
+        artemis_uid: 1337
+        artemis_gid: 1337
+        artemis_user: artemis
+        artemis_group: artemis
+        storage_export: "/srv/artemis"
+        storage_network: "fcfe:0:0:0:0:0:0:0/96"
+        storage_server_address: "fcfe:0:0:0:0:0:9:1"
+```
diff --git a/roles/wireguard/README.md b/roles/wireguard/README.md
index f7c494cf..262b5378 100644
--- a/roles/wireguard/README.md
+++ b/roles/wireguard/README.md
@@ -1,25 +1,57 @@
-Role Name
-=========
+# Wireguard
 
 This role creates a wireguard VPN between a group of servers. Each server in the host group can connect to each other node.
 
-Role Variables
---------------
-See `defaults/main.yml` for the default values.
+## Configuration
+
+To configure the role, you need to set the required variables in your Ansible playbook or inventory. The following variables are required:
+
+- `wireguard_host_ipv6_address`: The IPv6 address (with CIDR) which can be used to access the node. If left blank, Ansible will use host facts to fill the address.
+- `host_ipv4_address`: The IPv4 address of the host.
+- `wireguard_interface_address`: The address of the node inside the network.
+- `wireguard_pubkey`: The public key for Wireguard.
+- `wireguard_privkey`: The private key for Wireguard.
+- `wireguard_hostgroup`: The host group from your inventory which contains all the hosts that should be connected to each other.
+
+Default variables can be found in the `defaults/main.yml` file.
+
+### Variables that have to be configured:
 
-You have to define a host group from your inventroy which contains all the hosts that should be connected to each other:
 ```
-wireguard_hostgroup: "{{ groups.<group_name_here> }}"
+# IPv6 address (with CIDR!) which can be used to access the node - If left blank, ansible will use host facts to fill the address.
+wireguard_host_ipv6_address:
+host_ipv4_address:
+
+# Address of the node inside the network.
+wireguard_interface_address: "fcfe:0:0:0:0:0:a:1"
+
+# Wireguard Keys - Autmatically generated!
+wireguard_pubkey: 
+wireguard_privkey: 
 ```
-Each host in the host group has to specify the following `host_vars`:
 
+You have to define a host group from your inventory which contains all the hosts that should be connected to each other:
 ```
-# IPv6 address (with CIDR!) which can be used to access the node
-wireguard_host_ipv6_address:  # (If left blank, Ansible will try to fill it with the hostfacts)
-wireguard_interface_address: "fcfe:0:0:0:0:0:a:1" # Address of the node inside the network.
-wireguard_pubkey:
-wireguard_privkey:
+wireguard_hostgroup: "{{ groups.<group_name_here> }}"
 ```
+
+## Example Usage
+
+Here is an example playbook:
+
+```yaml
+- hosts: wireguard
+  roles:
+    - role: ls1intum.wireguard
+      vars:
+        wireguard_host_ipv6_address: "fcfe:0:0:0:0:0:a:1/128"
+        host_ipv4_address: "192.168.1.1"
+        wireguard_interface_address: "fcfe:0:0:0:0:0:a:1"
+        wireguard_pubkey: "your_public_key"
+        wireguard_privkey: "your_private_key"
+        wireguard_hostgroup: "{{ groups.yourgroup }}"
+```
+
 ## Automatic `host_var` generation
 
 This role contains a python script to generate the `host_var` files. Make sure to install the wireguard tools first - The python script uses the `wg` command to generate the keys.
@@ -46,8 +78,7 @@ python3 host_var_gen.py -h
 
 ## Manual Key generation
 
-The wireguard keys can be genereated by hand with:
+The wireguard keys can be generated by hand with:
 ```
 wg genkey | tee peer_A.priv | wg pubkey > peer_A.pub
 ```
-


Reviews:
user: login: copilot-pull-request-reviewer[bot]
body: ## Pull Request Overview

This PR enhances the documentation for multiple roles in the artemis-ansible-collection by adding clear configuration sections, detailed variable descriptions, and example playbooks. The changes focus on standardizing and clarifying the setup instructions and consolidating configuration details across the roles.
- Added a "Configuration" section with required variables and example playbooks in most README files.
- Updated references to external systems (e.g., replacing legacy version control and CI system names with LocalVC and LocalCI) and corrected several documentation typos.

### Reviewed Changes

Copilot reviewed 13 out of 13 changed files in this pull request and generated 1 comment.

<details>
<summary>Show a summary per file</summary>

| File                              | Description                                                             |
| --------------------------------- | ----------------------------------------------------------------------- |
| roles/wireguard/README.md         | Added configuration section with detailed variable descriptions         |
| roles/storage_provider/README.md  | Updated configuration instructions and provided an example playbook     |
| roles/storage_client/README.md    | Revised mount point documentation and configuration details             |
| roles/registry/README.md          | Standardized configuration instructions and example usage               |
| roles/pyris/README.md             | Added detailed configuration and example playbook for Pyris             |
| roles/proxy/README.md             | Expanded configuration details for nginx proxy with multiple variables  |
| roles/mysqld_exporter/README.md     | Improved configuration instructions and formatting corrections          |
| roles/legal/README.md             | Updated configuration instructions for legal document management        |
| roles/jenkins/README.md           | Clarified configuration variables and updated example playbook          |
| roles/firewall/README.md          | Enhanced instructions for configuring firewall rules and examples       |
| roles/db_backup/README.md         | Added an example playbook and clarified scheduling parameters             |
| roles/broker/README.md            | Updated ActiveMQ configuration instructions and example usage           |
| roles/artemis/README.md           | Consolidated configuration sections and updated external system references|
</details>



<details>
<summary>Comments suppressed due to low confidence (1)</summary>

**roles/proxy/README.md:68**
* Consider renaming 'proxy_worker_rlmmiit_nofile' to 'proxy_worker_rlimit_nofile' to match standard naming conventions and avoid confusion.
```
proxy_worker_rlmmiit_nofile: 30000
```
</details>


state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-05-02T14:05:35Z
user: login: coderabbitai[bot]
body: **Actionable comments posted: 0**

<details>
<summary>🧹 Nitpick comments (23)</summary><blockquote>

<details>
<summary>roles/db_backup/README.md (1)</summary><blockquote>

`3-3`: **Add missing comma for clarity**  
A comma after “db host” improves readability:  
```diff
-This role adds a cron job to the db host which creates regular DB backups.
+This role adds a cron job to the db host, which creates regular DB backups.
```

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 LanguageTool</summary>

[uncategorized] ~3-~3: Possible missing comma found.
Context: ...up  This role adds a cron job to the db host which creates regular DB backups.  ## C...

(AI_HYDRA_LEO_MISSING_COMMA)

</details>

</details>

</blockquote></details>
<details>
<summary>roles/mysqld_exporter/README.md (2)</summary><blockquote>

`16-16`: **Remove trailing punctuation in subheading**  
MarkdownLint flags trailing punctuation. Consider:  
```diff
-### Variables that have to be configured:
+### Variables that have to be configured
```

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 markdownlint-cli2 (0.17.2)</summary>

16-16: Trailing punctuation in heading
Punctuation: ':'

(MD026, no-trailing-punctuation)

</details>

</details>

---

`18-23`: **Specify language for code fence**  
Add “yaml” for syntax highlighting:  
```diff
-```
+```yaml
 mysql_exporter_user: "exporter"
 ...
-```
+```
```

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 markdownlint-cli2 (0.17.2)</summary>

18-18: Fenced code blocks should have a language specified
null

(MD040, fenced-code-language)

</details>

</details>

</blockquote></details>
<details>
<summary>roles/registry/README.md (2)</summary><blockquote>

`14-14`: **Remove trailing punctuation in subheading**  
MarkdownLint flags trailing colon. Suggest:  
```diff
-### Variables that have to be configured:
+### Variables that have to be configured
```

---

`16-19`: **Specify language for code fence**  
Add “yaml” to the fence for proper syntax highlighting:  
```diff
-```
+```yaml
 artemis_jhipster_jwt: "your_jwt_secret"
 artemis_jhipster_registry_password: "your_registry_password"
-```
+```
```

</blockquote></details>
<details>
<summary>roles/proxy/README.md (2)</summary><blockquote>

`28-28`: **Remove trailing punctuation in subheading**  
MarkdownLint flags trailing colon. Change:  
```diff
-### Variables that have to be configured:
+### Variables that have to be configured
```

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 markdownlint-cli2 (0.17.2)</summary>

28-28: Trailing punctuation in heading
Punctuation: ':'

(MD026, no-trailing-punctuation)

</details>

</details>

---

`30-78`: **Specify language for default vars code fence**  
Add “yaml” for syntax highlighting:  
```diff
-```
+```yaml
 servers: []
 ...
-```
+```
```

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 markdownlint-cli2 (0.17.2)</summary>

30-30: Fenced code blocks should have a language specified
null

(MD040, fenced-code-language)

</details>

</details>

</blockquote></details>
<details>
<summary>roles/jenkins/README.md (2)</summary><blockquote>

`15-15`: **Remove trailing colon in heading**  
Consider dropping the colon from “### Variables that have to be configured:” to align with common Markdown heading style.

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 markdownlint-cli2 (0.17.2)</summary>

15-15: Trailing punctuation in heading
Punctuation: ':'

(MD026, no-trailing-punctuation)

</details>

</details>

---

`17-21`: **Specify language for fenced code block**  
Add a language identifier (e.g., ```yaml) to the default variable block for consistent syntax highlighting.

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 markdownlint-cli2 (0.17.2)</summary>

17-17: Fenced code blocks should have a language specified
null

(MD040, fenced-code-language)

</details>

</details>

</blockquote></details>
<details>
<summary>roles/wireguard/README.md (3)</summary><blockquote>

`18-18`: **Remove trailing colon in heading**  
The heading “### Variables that have to be configured:” should omit the colon for consistency with other headers.

---

`20-31`: **Add code block language for default values**  
The fenced block showing default variable declarations should specify a language (e.g., ```yaml) to enable syntax highlighting.

---

`33-35`: **Specify language for host group code block**  
Include a language tag on the fenced block demonstrating `wireguard_hostgroup` (e.g., ```yaml).

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 LanguageTool</summary>

[uncategorized] ~33-~33: Possible missing comma found.
Context: ...u have to define a host group from your inventory which contains all the hosts that shoul...

(AI_HYDRA_LEO_MISSING_COMMA)

</details>

</details>

</blockquote></details>
<details>
<summary>roles/firewall/README.md (4)</summary><blockquote>

`9-13`: **Ensure list consistency and sentence completeness**  
The bullets clearly describe each variable. For the `firewall_hostgroup` item on line 13, consider starting with “It can be…” to form a complete sentence.

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 LanguageTool</summary>

[uncategorized] ~9-~9: Loose punctuation mark.
Context: ...e required:  - `management_network_ipv4`: The IPv4 management network used to all...

(UNLIKELY_OPENING_PUNCTUATION)

---

[uncategorized] ~10-~10: Loose punctuation mark.
Context: ...nd services. - `management_network_ipv6`: The IPv6 management network used to all...

(UNLIKELY_OPENING_PUNCTUATION)

---

[uncategorized] ~11-~11: Loose punctuation mark.
Context: ...s and services. - `monitoring_host_ipv4`: The IPv4 address of the monitoring serv...

(UNLIKELY_OPENING_PUNCTUATION)

---

[uncategorized] ~12-~12: Loose punctuation mark.
Context: ...toring service. - `monitoring_host_ipv6`: The IPv6 address of the monitoring serv...

(UNLIKELY_OPENING_PUNCTUATION)

---

[uncategorized] ~13-~13: Loose punctuation mark.
Context: ...nitoring service. - `firewall_hostgroup`: The firewall rule set to be applied. Ca...

(UNLIKELY_OPENING_PUNCTUATION)

---

[style] ~13-~13: To form a complete sentence, be sure to include a subject.
Context: ...`: The firewall rule set to be applied. Can be 'registry', 'nodes', 'proxy' or left...

(MISSING_IT_THERE)

</details>

</details>

---

`17-17`: **Remove trailing colon in heading**  
Consider dropping the colon from “### Variables that have to be configured:” to follow Markdown conventions.

---

`19-27`: **Add code block language for default values**  
The fenced block showing example variable assignments should include a language tag (e.g., ```yaml) for syntax highlighting.

---

`29-33`: **Specify language for firewall_hostgroup code block**  
Mark the fenced block with `yaml` to maintain consistency with other examples.

</blockquote></details>
<details>
<summary>roles/pyris/README.md (1)</summary><blockquote>

`18-25`: **Add code block language for default values**  
Include a language tag (```yaml) on the fenced block showing variable placeholders for syntax highlighting.

</blockquote></details>
<details>
<summary>roles/storage_client/README.md (2)</summary><blockquote>

`18-18`: **Remove trailing colon in heading**  
Omit the colon at the end of “### Variables that have to be configured:” for consistency.

---

`20-27`: **Enhance code block consistency**  
1. Add a language tag (```yaml) to the fenced block for syntax highlighting.  
2. Quote the `storage_export` value (`"/srv/artemis"`) to match the quoting style of other variables.

</blockquote></details>
<details>
<summary>roles/storage_provider/README.md (1)</summary><blockquote>

`19-30`: **Specify code block language and tighten formatting.**  
The fenced block lacks a language specifier, which inhibits syntax highlighting. Also, consider standardizing the heading syntax by removing the trailing colon on “Variables that have to be configured:”.  
Apply this diff:
```diff
- ### Variables that have to be configured:
+ ### Variables that have to be configured
```
```diff
- ```
+ ```yaml
```
```diff
- ```
+ ```yaml
```

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 markdownlint-cli2 (0.17.2)</summary>

19-19: Trailing punctuation in heading
Punctuation: ':'

(MD026, no-trailing-punctuation)

---

21-21: Fenced code blocks should have a language specified
null

(MD040, fenced-code-language)

</details>

</details>

</blockquote></details>
<details>
<summary>roles/broker/README.md (1)</summary><blockquote>

`15-23`: **Add YAML language to code block for syntax highlighting.**  
The variables block is missing a language specifier on the fenced code.  
```diff
- ```
+ ```yaml
```
```diff
- ```
+ ```yaml
```

</blockquote></details>
<details>
<summary>roles/artemis/README.md (2)</summary><blockquote>

`9-9`: **Remove trailing colon in heading.**  
For consistency with markdown lint rules, drop the colon at the end of this heading:
```diff
- ### Variables that have to be configured for a single node installation:
+ ### Variables that have to be configured for a single node installation
```

---

`11-21`: **Specify YAML language for all code fences.**  
Multiple configuration blocks (single-node vars, LDAP, user management, LocalVC, LocalCI, Jenkins, Athena, Iris, mail, LTI, registry, Active MQ) lack a language specifier. Adding `yaml` after the backticks will enable proper syntax highlighting:
```diff
- ```
+ ```yaml
```



Also applies to: 28-33, 36-43, 46-59, 62-76, 79-89, 92-97, 100-104, 107-115, 118-121, 126-128, 133-138

</blockquote></details>

</blockquote></details>

<details>
<summary>📜 Review details</summary>

**Configuration used: CodeRabbit UI**
**Review profile: CHILL**
**Plan: Pro**

<details>
<summary>📥 Commits</summary>

Reviewing files that changed from the base of the PR and between d1d77da50ac26c3734d4498697994bbe675bb022 and 7542d1ae0cca1e14793e5e3afdc9a87ed4aa4ece.

</details>

<details>
<summary>📒 Files selected for processing (13)</summary>

* `roles/artemis/README.md` (2 hunks)
* `roles/broker/README.md` (1 hunks)
* `roles/db_backup/README.md` (1 hunks)
* `roles/firewall/README.md` (2 hunks)
* `roles/jenkins/README.md` (1 hunks)
* `roles/legal/README.md` (1 hunks)
* `roles/mysqld_exporter/README.md` (1 hunks)
* `roles/proxy/README.md` (1 hunks)
* `roles/pyris/README.md` (1 hunks)
* `roles/registry/README.md` (1 hunks)
* `roles/storage_client/README.md` (2 hunks)
* `roles/storage_provider/README.md` (1 hunks)
* `roles/wireguard/README.md` (2 hunks)

</details>

<details>
<summary>🧰 Additional context used</summary>

<details>
<summary>🪛 LanguageTool</summary>

<details>
<summary>roles/legal/README.md</summary>

[uncategorized] ~9-~9: Loose punctuation mark.
Context: ...es are required:  - `artemis_legal_path`: The path where the legal documents will...

(UNLIKELY_OPENING_PUNCTUATION)

---

[uncategorized] ~9-~9: A determiner appears to be missing. Consider inserting it.
Context: ...ere the legal documents will be stored. Default is `/opt/artemis/legal`. - `artemis_use...

(AI_EN_LECTOR_MISSING_DETERMINER)

---

[uncategorized] ~10-~10: Loose punctuation mark.
Context: ...s `/opt/artemis/legal`. - `artemis_user`: The user who will own the legal documen...

(UNLIKELY_OPENING_PUNCTUATION)

---

[uncategorized] ~10-~10: A determiner appears to be missing. Consider inserting it.
Context: ... user who will own the legal documents. Default is `artemis`. - `artemis_group`: The gr...

(AI_EN_LECTOR_MISSING_DETERMINER)

---

[uncategorized] ~11-~11: Loose punctuation mark.
Context: ... Default is `artemis`. - `artemis_group`: The group who will own the legal docume...

(UNLIKELY_OPENING_PUNCTUATION)

</details>
<details>
<summary>roles/db_backup/README.md</summary>

[uncategorized] ~3-~3: Possible missing comma found.
Context: ...up  This role adds a cron job to the db host which creates regular DB backups.  ## C...

(AI_HYDRA_LEO_MISSING_COMMA)

</details>
<details>
<summary>roles/proxy/README.md</summary>

[uncategorized] ~9-~9: Loose punctuation mark.
Context: ...ing variables are required:  - `servers`: A list of server configurations, includ...

(UNLIKELY_OPENING_PUNCTUATION)

---

[uncategorized] ~10-~10: Loose punctuation mark.
Context: ... it is the default server. - `redirects`: A list of redirect configurations, incl...

(UNLIKELY_OPENING_PUNCTUATION)

---

[uncategorized] ~11-~11: Loose punctuation mark.
Context: ...he target URL. - `proxy_available_nodes`: A list of nodes for load balancing, eit...

(UNLIKELY_OPENING_PUNCTUATION)

---

[uncategorized] ~12-~12: Loose punctuation mark.
Context: ...r manually listed. - `proxy_target_port`: The service port on nodes for load bala...

(UNLIKELY_OPENING_PUNCTUATION)

---

[uncategorized] ~13-~13: Loose punctuation mark.
Context: ...or load balancing. - `proxy_forward_ssh`: Whether to enable port forwarding for S...

(UNLIKELY_OPENING_PUNCTUATION)

---

[uncategorized] ~14-~14: Loose punctuation mark.
Context: ...mis ICL LocalVC. - `proxy_node_protocol`: The protocol used to communicate with n...

(UNLIKELY_OPENING_PUNCTUATION)

---

[uncategorized] ~15-~15: Loose punctuation mark.
Context: ...(either http or https). - `proxy_mailto`: A valid mail address used for the /mail...

(UNLIKELY_OPENING_PUNCTUATION)

---

[uncategorized] ~16-~16: Loose punctuation mark.
Context: ...the /mailto endpoint. - `proxy_resolver`: The resolver configuration for nginx. -...

(UNLIKELY_OPENING_PUNCTUATION)

---

[uncategorized] ~17-~17: Loose punctuation mark.
Context: ...r nginx. - `proxy_worker_rlmmiit_nofile`: The worker_rlimit_nofile setting for ng...

(UNLIKELY_OPENING_PUNCTUATION)

---

[uncategorized] ~18-~18: Loose punctuation mark.
Context: ... for nginx. - `proxy_worker_connections`: The worker_connections setting for ngin...

(UNLIKELY_OPENING_PUNCTUATION)

---

[uncategorized] ~19-~19: Loose punctuation mark.
Context: ... - `proxy_server_names_hash_bucket_size`: The server_names_hash_bucket_size setti...

(UNLIKELY_OPENING_PUNCTUATION)

---

[uncategorized] ~20-~20: Loose punctuation mark.
Context: ...g for nginx. - `proxy_generate_dh_param`: Whether to generate DH parameters. - `p...

(UNLIKELY_OPENING_PUNCTUATION)

---

[uncategorized] ~21-~21: Loose punctuation mark.
Context: ...te DH parameters. - `proxy_send_timeout`: The send timeout for nginx. - `proxy_re...

(UNLIKELY_OPENING_PUNCTUATION)

---

[uncategorized] ~22-~22: Loose punctuation mark.
Context: ...imeout for nginx. - `proxy_read_timeout`: The read timeout for nginx. - `fastcgi_...

(UNLIKELY_OPENING_PUNCTUATION)

---

[uncategorized] ~23-~23: Loose punctuation mark.
Context: ...eout for nginx. - `fastcgi_send_timeout`: The send timeout for FastCGI. - `fastcg...

(UNLIKELY_OPENING_PUNCTUATION)

---

[uncategorized] ~24-~24: Loose punctuation mark.
Context: ...ut for FastCGI. - `fastcgi_read_timeout`: The read timeout for FastCGI.  Default ...

(UNLIKELY_OPENING_PUNCTUATION)

</details>
<details>
<summary>roles/wireguard/README.md</summary>

[uncategorized] ~9-~9: Loose punctuation mark.
Context: ...quired:  - `wireguard_host_ipv6_address`: The IPv6 address (with CIDR) which can ...

(UNLIKELY_OPENING_PUNCTUATION)

---

[uncategorized] ~10-~10: Loose punctuation mark.
Context: ... fill the address. - `host_ipv4_address`: The IPv4 address of the host. - `wiregu...

(UNLIKELY_OPENING_PUNCTUATION)

---

[uncategorized] ~11-~11: Loose punctuation mark.
Context: ...he host. - `wireguard_interface_address`: The address of the node inside the netw...

(UNLIKELY_OPENING_PUNCTUATION)

---

[uncategorized] ~12-~12: Loose punctuation mark.
Context: ...inside the network. - `wireguard_pubkey`: The public key for Wireguard. - `wiregu...

(UNLIKELY_OPENING_PUNCTUATION)

---

[uncategorized] ~13-~13: Loose punctuation mark.
Context: ...key for Wireguard. - `wireguard_privkey`: The private key for Wireguard. - `wireg...

(UNLIKELY_OPENING_PUNCTUATION)

---

[uncategorized] ~14-~14: Loose punctuation mark.
Context: ...y for Wireguard. - `wireguard_hostgroup`: The host group from your inventory whic...

(UNLIKELY_OPENING_PUNCTUATION)

---

[uncategorized] ~14-~14: Possible missing comma found.
Context: ...rd_hostgroup`: The host group from your inventory which contains all the hosts that shoul...

(AI_HYDRA_LEO_MISSING_COMMA)

---

[uncategorized] ~33-~33: Possible missing comma found.
Context: ...u have to define a host group from your inventory which contains all the hosts that shoul...

(AI_HYDRA_LEO_MISSING_COMMA)

</details>
<details>
<summary>roles/registry/README.md</summary>

[uncategorized] ~9-~9: Loose punctuation mark.
Context: ... are required:  - `artemis_jhipster_jwt`: The JWT secret for Artemis. - `artemis_...

(UNLIKELY_OPENING_PUNCTUATION)

---

[uncategorized] ~10-~10: Loose punctuation mark.
Context: .... - `artemis_jhipster_registry_password`: The password for the JHipster registry....

(UNLIKELY_OPENING_PUNCTUATION)

</details>
<details>
<summary>roles/storage_client/README.md</summary>

[uncategorized] ~9-~9: Loose punctuation mark.
Context: ...variables are required:  - `artemis_uid`: The UID for the Artemis user. - `artemi...

(UNLIKELY_OPENING_PUNCTUATION)

---

[uncategorized] ~10-~10: Loose punctuation mark.
Context: ...ID for the Artemis user. - `artemis_gid`: The GID for the Artemis group. - `artem...

(UNLIKELY_OPENING_PUNCTUATION)

---

[uncategorized] ~11-~11: Loose punctuation mark.
Context: ... for the Artemis group. - `artemis_user`: The name of the Artemis user. - `artemi...

(UNLIKELY_OPENING_PUNCTUATION)

---

[uncategorized] ~12-~12: Loose punctuation mark.
Context: ...e of the Artemis user. - `artemis_group`: The name of the Artemis group. - `stora...

(UNLIKELY_OPENING_PUNCTUATION)

---

[uncategorized] ~13-~13: Loose punctuation mark.
Context: ...rtemis group. - `storage_server_address`: The address of the storage server. - `s...

(UNLIKELY_OPENING_PUNCTUATION)

---

[uncategorized] ~14-~14: Loose punctuation mark.
Context: ...f the storage server. - `storage_export`: The path to the NFS export on the stora...

(UNLIKELY_OPENING_PUNCTUATION)

</details>
<details>
<summary>roles/jenkins/README.md</summary>

[uncategorized] ~9-~9: Loose punctuation mark.
Context: ...are required:  - `jenkins_internal_port`: The internal port for Jenkins. - `jenki...

(UNLIKELY_OPENING_PUNCTUATION)

---

[uncategorized] ~10-~10: Loose punctuation mark.
Context: ...l port for Jenkins. - `jenkins_data_dir`: The data directory for Jenkins. - `jenk...

(UNLIKELY_OPENING_PUNCTUATION)

---

[uncategorized] ~11-~11: Loose punctuation mark.
Context: ...tory for Jenkins. - `jenkins_docker_tag`: The Docker tag for Jenkins.  Default va...

(UNLIKELY_OPENING_PUNCTUATION)

</details>
<details>
<summary>roles/broker/README.md</summary>

[uncategorized] ~9-~9: Loose punctuation mark.
Context: ... variables are required:  - `broker.url`: The hostname of the broker. - `broker.u...

(UNLIKELY_OPENING_PUNCTUATION)

---

[uncategorized] ~10-~10: Loose punctuation mark.
Context: ...tname of the broker. - `broker.username`: The username for the broker. - `broker....

(UNLIKELY_OPENING_PUNCTUATION)

---

[uncategorized] ~11-~11: Loose punctuation mark.
Context: ...name for the broker. - `broker.password`: The password for the broker.  Default v...

(UNLIKELY_OPENING_PUNCTUATION)

</details>
<details>
<summary>roles/storage_provider/README.md</summary>

[uncategorized] ~9-~9: Loose punctuation mark.
Context: ...variables are required:  - `artemis_uid`: The UID for the Artemis user. - `artemi...

(UNLIKELY_OPENING_PUNCTUATION)

---

[uncategorized] ~10-~10: Loose punctuation mark.
Context: ...ID for the Artemis user. - `artemis_gid`: The GID for the Artemis group. - `artem...

(UNLIKELY_OPENING_PUNCTUATION)

---

[uncategorized] ~11-~11: Loose punctuation mark.
Context: ... for the Artemis group. - `artemis_user`: The name of the Artemis user. - `artemi...

(UNLIKELY_OPENING_PUNCTUATION)

---

[uncategorized] ~12-~12: Loose punctuation mark.
Context: ...e of the Artemis user. - `artemis_group`: The name of the Artemis group. - `stora...

(UNLIKELY_OPENING_PUNCTUATION)

---

[uncategorized] ~13-~13: Loose punctuation mark.
Context: ...of the Artemis group. - `storage_export`: The path to the NFS export. - `storage_...

(UNLIKELY_OPENING_PUNCTUATION)

---

[uncategorized] ~14-~14: Loose punctuation mark.
Context: ...h to the NFS export. - `storage_network`: The network address for the storage. - ...

(UNLIKELY_OPENING_PUNCTUATION)

---

[uncategorized] ~15-~15: Loose punctuation mark.
Context: ... the storage. - `storage_server_address`: The address of the storage server.  Def...

(UNLIKELY_OPENING_PUNCTUATION)

</details>
<details>
<summary>roles/mysqld_exporter/README.md</summary>

[style] ~3-~3: To elevate your writing, try using a synonym like ‘required’ here. Or, to avoid using the passive voice, try replacing the past participle ‘needed’ with an adjective.
Context: ...he MySQL database on the host, which is needed for scraping the data.  ## Configuratio...

(IS_NEEDED_NECESSARY)

---

[uncategorized] ~9-~9: Loose punctuation mark.
Context: ...s are required:  - `mysql_exporter_user`: The username for the MySQL exporter. - ...

(UNLIKELY_OPENING_PUNCTUATION)

---

[uncategorized] ~10-~10: Loose punctuation mark.
Context: ...QL exporter. - `mysql_exporter_password`: The password for the MySQL exporter. - ...

(UNLIKELY_OPENING_PUNCTUATION)

---

[uncategorized] ~11-~11: Loose punctuation mark.
Context: ...SQL exporter. - `mysql_exporter_version`: The version of the MySQL exporter. - `m...

(UNLIKELY_OPENING_PUNCTUATION)

---

[uncategorized] ~12-~12: Loose punctuation mark.
Context: ...e MySQL exporter. - `mysql_exporter_dsn`: The Data Source Name (DSN) for the MySQ...

(UNLIKELY_OPENING_PUNCTUATION)

</details>
<details>
<summary>roles/firewall/README.md</summary>

[uncategorized] ~9-~9: Loose punctuation mark.
Context: ...e required:  - `management_network_ipv4`: The IPv4 management network used to all...

(UNLIKELY_OPENING_PUNCTUATION)

---

[uncategorized] ~10-~10: Loose punctuation mark.
Context: ...nd services. - `management_network_ipv6`: The IPv6 management network used to all...

(UNLIKELY_OPENING_PUNCTUATION)

---

[uncategorized] ~11-~11: Loose punctuation mark.
Context: ...s and services. - `monitoring_host_ipv4`: The IPv4 address of the monitoring serv...

(UNLIKELY_OPENING_PUNCTUATION)

---

[uncategorized] ~12-~12: Loose punctuation mark.
Context: ...toring service. - `monitoring_host_ipv6`: The IPv6 address of the monitoring serv...

(UNLIKELY_OPENING_PUNCTUATION)

---

[uncategorized] ~13-~13: Loose punctuation mark.
Context: ...nitoring service. - `firewall_hostgroup`: The firewall rule set to be applied. Ca...

(UNLIKELY_OPENING_PUNCTUATION)

---

[style] ~13-~13: To form a complete sentence, be sure to include a subject.
Context: ...`: The firewall rule set to be applied. Can be 'registry', 'nodes', 'proxy' or left...

(MISSING_IT_THERE)

</details>
<details>
<summary>roles/pyris/README.md</summary>

[uncategorized] ~9-~9: Loose punctuation mark.
Context: ...d:  - `pyris_deployment_user_public_key`: The public key for the deployment user....

(UNLIKELY_OPENING_PUNCTUATION)

---

[uncategorized] ~10-~10: Loose punctuation mark.
Context: ...or the deployment user. - `pyris_config`: The configuration for Pyris. - `proxy_s...

(UNLIKELY_OPENING_PUNCTUATION)

---

[uncategorized] ~11-~11: Loose punctuation mark.
Context: ...or Pyris. - `proxy_ssl_certificate_path`: The path to the SSL certificate for the...

(UNLIKELY_OPENING_PUNCTUATION)

---

[uncategorized] ~12-~12: Loose punctuation mark.
Context: ...roxy. - `proxy_ssl_certificate_key_path`: The path to the SSL certificate key for...

(UNLIKELY_OPENING_PUNCTUATION)

</details>

</details>
<details>
<summary>🪛 markdownlint-cli2 (0.17.2)</summary>

<details>
<summary>roles/proxy/README.md</summary>

28-28: Trailing punctuation in heading
Punctuation: ':'

(MD026, no-trailing-punctuation)

---

30-30: Fenced code blocks should have a language specified
null

(MD040, fenced-code-language)

</details>
<details>
<summary>roles/jenkins/README.md</summary>

15-15: Trailing punctuation in heading
Punctuation: ':'

(MD026, no-trailing-punctuation)

---

17-17: Fenced code blocks should have a language specified
null

(MD040, fenced-code-language)

</details>
<details>
<summary>roles/storage_provider/README.md</summary>

19-19: Trailing punctuation in heading
Punctuation: ':'

(MD026, no-trailing-punctuation)

---

21-21: Fenced code blocks should have a language specified
null

(MD040, fenced-code-language)

</details>
<details>
<summary>roles/mysqld_exporter/README.md</summary>

16-16: Trailing punctuation in heading
Punctuation: ':'

(MD026, no-trailing-punctuation)

---

18-18: Fenced code blocks should have a language specified
null

(MD040, fenced-code-language)

</details>

</details>

</details>

<details>
<summary>🔇 Additional comments (55)</summary><blockquote>

<details>
<summary>roles/db_backup/README.md (5)</summary>

`1-1`: **Header is clear and follows project conventions**  
The H1 title succinctly identifies the role.

---

`5-5`: **Well-structured Configuration section**  
The “## Configuration” header clearly delineates required settings.

---

`9-16`: **Configuration snippet is clear and accurate**  
Variables and example values are precise and correctly formatted as YAML.

---

`18-18`: **Example Usage header is informative**  
The “## Example Usage” header appropriately introduces the sample playbook section.

---

`22-32`: **Example playbook snippet demonstrates correct usage**  
The snippet shows realistic variable assignments and role inclusion.

</details>
<details>
<summary>roles/legal/README.md (4)</summary>

`1-4`: **Header and description are concise**  
The title and opening sentence clearly state the role’s purpose.

---

`5-11`: **Configuration section effectively lists required variables**  
The header, introduction, and bullet list of variables are complete and well-formatted.

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 LanguageTool</summary>

[uncategorized] ~9-~9: Loose punctuation mark.
Context: ...es are required:  - `artemis_legal_path`: The path where the legal documents will...

(UNLIKELY_OPENING_PUNCTUATION)

---

[uncategorized] ~9-~9: A determiner appears to be missing. Consider inserting it.
Context: ...ere the legal documents will be stored. Default is `/opt/artemis/legal`. - `artemis_use...

(AI_EN_LECTOR_MISSING_DETERMINER)

---

[uncategorized] ~10-~10: Loose punctuation mark.
Context: ...s `/opt/artemis/legal`. - `artemis_user`: The user who will own the legal documen...

(UNLIKELY_OPENING_PUNCTUATION)

---

[uncategorized] ~10-~10: A determiner appears to be missing. Consider inserting it.
Context: ... user who will own the legal documents. Default is `artemis`. - `artemis_group`: The gr...

(AI_EN_LECTOR_MISSING_DETERMINER)

---

[uncategorized] ~11-~11: Loose punctuation mark.
Context: ... Default is `artemis`. - `artemis_group`: The group who will own the legal docume...

(UNLIKELY_OPENING_PUNCTUATION)

</details>

</details>

---

`13-15`: **Example Usage header and intro are clear**  
The “## Example Usage” header and introductory line correctly set up the sample playbook.

---

`17-25`: **Example playbook snippet is accurate and helpful**  
It demonstrates how to include the role and configure all required variables.

</details>
<details>
<summary>roles/mysqld_exporter/README.md (4)</summary>

`1-4`: **Header and description clearly explain the role**  
The H1 and opening text succinctly describe what the role does.

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 LanguageTool</summary>

[style] ~3-~3: To elevate your writing, try using a synonym like ‘required’ here. Or, to avoid using the passive voice, try replacing the past participle ‘needed’ with an adjective.
Context: ...he MySQL database on the host, which is needed for scraping the data.  ## Configuratio...

(IS_NEEDED_NECESSARY)

</details>

</details>

---

`5-13`: **Configuration section is clear and informative**  
Required variables are listed with precise descriptions and example values.

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 LanguageTool</summary>

[uncategorized] ~9-~9: Loose punctuation mark.
Context: ...s are required:  - `mysql_exporter_user`: The username for the MySQL exporter. - ...

(UNLIKELY_OPENING_PUNCTUATION)

---

[uncategorized] ~10-~10: Loose punctuation mark.
Context: ...QL exporter. - `mysql_exporter_password`: The password for the MySQL exporter. - ...

(UNLIKELY_OPENING_PUNCTUATION)

---

[uncategorized] ~11-~11: Loose punctuation mark.
Context: ...SQL exporter. - `mysql_exporter_version`: The version of the MySQL exporter. - `m...

(UNLIKELY_OPENING_PUNCTUATION)

---

[uncategorized] ~12-~12: Loose punctuation mark.
Context: ...e MySQL exporter. - `mysql_exporter_dsn`: The Data Source Name (DSN) for the MySQ...

(UNLIKELY_OPENING_PUNCTUATION)

</details>

</details>

---

`25-40`: **Example Usage section is well-formed**  
The sample playbook is correctly formatted and demonstrates all required vars.

---

`42-45`: **Dependencies section is precise**  
The installation command is clear and accurate.

</details>
<details>
<summary>roles/registry/README.md (3)</summary>

`1-4`: **Header and description are clear**  
The title identifies the role, and the opening line explains its purpose.

---

`5-10`: **Configuration section clearly lists variables**  
The header, intro, and bullet list are concise and informative.

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 LanguageTool</summary>

[uncategorized] ~9-~9: Loose punctuation mark.
Context: ... are required:  - `artemis_jhipster_jwt`: The JWT secret for Artemis. - `artemis_...

(UNLIKELY_OPENING_PUNCTUATION)

---

[uncategorized] ~10-~10: Loose punctuation mark.
Context: .... - `artemis_jhipster_registry_password`: The password for the JHipster registry....

(UNLIKELY_OPENING_PUNCTUATION)

</details>

</details>

---

`23-34`: **Example Usage section is comprehensive**  
The sample playbook correctly demonstrates role inclusion and var definitions.

</details>
<details>
<summary>roles/proxy/README.md (5)</summary>

`1-4`: **Header and description are effective**  
The title and opening sentence clearly convey the role’s functionality.

---

`5-13`: **Configuration header and intro are clear**  
The “## Configuration” section sets expectations properly.

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 LanguageTool</summary>

[uncategorized] ~9-~9: Loose punctuation mark.
Context: ...ing variables are required:  - `servers`: A list of server configurations, includ...

(UNLIKELY_OPENING_PUNCTUATION)

---

[uncategorized] ~10-~10: Loose punctuation mark.
Context: ... it is the default server. - `redirects`: A list of redirect configurations, incl...

(UNLIKELY_OPENING_PUNCTUATION)

---

[uncategorized] ~11-~11: Loose punctuation mark.
Context: ...he target URL. - `proxy_available_nodes`: A list of nodes for load balancing, eit...

(UNLIKELY_OPENING_PUNCTUATION)

---

[uncategorized] ~12-~12: Loose punctuation mark.
Context: ...r manually listed. - `proxy_target_port`: The service port on nodes for load bala...

(UNLIKELY_OPENING_PUNCTUATION)

---

[uncategorized] ~13-~13: Loose punctuation mark.
Context: ...or load balancing. - `proxy_forward_ssh`: Whether to enable port forwarding for S...

(UNLIKELY_OPENING_PUNCTUATION)

</details>

</details>

---

`9-24`: **Variable list is comprehensive and well-documented**  
All required vars are described with enough context for users.

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 LanguageTool</summary>

[uncategorized] ~9-~9: Loose punctuation mark.
Context: ...ing variables are required:  - `servers`: A list of server configurations, includ...

(UNLIKELY_OPENING_PUNCTUATION)

---

[uncategorized] ~10-~10: Loose punctuation mark.
Context: ... it is the default server. - `redirects`: A list of redirect configurations, incl...

(UNLIKELY_OPENING_PUNCTUATION)

---

[uncategorized] ~11-~11: Loose punctuation mark.
Context: ...he target URL. - `proxy_available_nodes`: A list of nodes for load balancing, eit...

(UNLIKELY_OPENING_PUNCTUATION)

---

[uncategorized] ~12-~12: Loose punctuation mark.
Context: ...r manually listed. - `proxy_target_port`: The service port on nodes for load bala...

(UNLIKELY_OPENING_PUNCTUATION)

---

[uncategorized] ~13-~13: Loose punctuation mark.
Context: ...or load balancing. - `proxy_forward_ssh`: Whether to enable port forwarding for S...

(UNLIKELY_OPENING_PUNCTUATION)

---

[uncategorized] ~14-~14: Loose punctuation mark.
Context: ...mis ICL LocalVC. - `proxy_node_protocol`: The protocol used to communicate with n...

(UNLIKELY_OPENING_PUNCTUATION)

---

[uncategorized] ~15-~15: Loose punctuation mark.
Context: ...(either http or https). - `proxy_mailto`: A valid mail address used for the /mail...

(UNLIKELY_OPENING_PUNCTUATION)

---

[uncategorized] ~16-~16: Loose punctuation mark.
Context: ...the /mailto endpoint. - `proxy_resolver`: The resolver configuration for nginx. -...

(UNLIKELY_OPENING_PUNCTUATION)

---

[uncategorized] ~17-~17: Loose punctuation mark.
Context: ...r nginx. - `proxy_worker_rlmmiit_nofile`: The worker_rlimit_nofile setting for ng...

(UNLIKELY_OPENING_PUNCTUATION)

---

[uncategorized] ~18-~18: Loose punctuation mark.
Context: ... for nginx. - `proxy_worker_connections`: The worker_connections setting for ngin...

(UNLIKELY_OPENING_PUNCTUATION)

---

[uncategorized] ~19-~19: Loose punctuation mark.
Context: ... - `proxy_server_names_hash_bucket_size`: The server_names_hash_bucket_size setti...

(UNLIKELY_OPENING_PUNCTUATION)

---

[uncategorized] ~20-~20: Loose punctuation mark.
Context: ...g for nginx. - `proxy_generate_dh_param`: Whether to generate DH parameters. - `p...

(UNLIKELY_OPENING_PUNCTUATION)

---

[uncategorized] ~21-~21: Loose punctuation mark.
Context: ...te DH parameters. - `proxy_send_timeout`: The send timeout for nginx. - `proxy_re...

(UNLIKELY_OPENING_PUNCTUATION)

---

[uncategorized] ~22-~22: Loose punctuation mark.
Context: ...imeout for nginx. - `proxy_read_timeout`: The read timeout for nginx. - `fastcgi_...

(UNLIKELY_OPENING_PUNCTUATION)

---

[uncategorized] ~23-~23: Loose punctuation mark.
Context: ...eout for nginx. - `fastcgi_send_timeout`: The send timeout for FastCGI. - `fastcg...

(UNLIKELY_OPENING_PUNCTUATION)

---

[uncategorized] ~24-~24: Loose punctuation mark.
Context: ...ut for FastCGI. - `fastcgi_read_timeout`: The read timeout for FastCGI.  Default ...

(UNLIKELY_OPENING_PUNCTUATION)

</details>

</details>

---

`80-83`: **Example Usage header and intro are on point**  
The section properly introduces the sample playbook.

---

`84-116`: **Example playbook snippet is detailed and correct**  
It covers all variables and realistic defaults for a proxy setup.

</details>
<details>
<summary>roles/jenkins/README.md (5)</summary>

`1-3`: **Header and introduction are clear**  
The title and opening description succinctly explain the Jenkins role.

---

`5-7`: **Configuration section is well-structured**  
The “## Configuration” heading and introductory text clearly outline how to set up the role.

---

`9-11`: **Required variables descriptions are concise**  
Each bullet lists a variable and its purpose in a straightforward manner.

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 LanguageTool</summary>

[uncategorized] ~9-~9: Loose punctuation mark.
Context: ...are required:  - `jenkins_internal_port`: The internal port for Jenkins. - `jenki...

(UNLIKELY_OPENING_PUNCTUATION)

---

[uncategorized] ~10-~10: Loose punctuation mark.
Context: ...l port for Jenkins. - `jenkins_data_dir`: The data directory for Jenkins. - `jenk...

(UNLIKELY_OPENING_PUNCTUATION)

---

[uncategorized] ~11-~11: Loose punctuation mark.
Context: ...tory for Jenkins. - `jenkins_docker_tag`: The Docker tag for Jenkins.  Default va...

(UNLIKELY_OPENING_PUNCTUATION)

</details>

</details>

---

`23-35`: **Example usage section is complete and consistent**  
The “## Example Usage” section uses a `yaml` code block and clearly demonstrates how to invoke the role with required vars.

---

`37-39`: **Post-example notes are helpful**  
The additional notes on the initial password and reverse proxy requirement adequately warn users about next steps.

</details>
<details>
<summary>roles/wireguard/README.md (4)</summary>

`1-3`: **Header and overview are clear**  
The title and opening sentence effectively describe the Wireguard role’s purpose.

---

`5-7`: **Configuration heading and intro are well-defined**  
The configuration section clearly instructs users where to set variables.

---

`9-14`: **Required variables list is comprehensive**  
All necessary variables are listed with clear descriptions.

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 LanguageTool</summary>

[uncategorized] ~9-~9: Loose punctuation mark.
Context: ...quired:  - `wireguard_host_ipv6_address`: The IPv6 address (with CIDR) which can ...

(UNLIKELY_OPENING_PUNCTUATION)

---

[uncategorized] ~10-~10: Loose punctuation mark.
Context: ... fill the address. - `host_ipv4_address`: The IPv4 address of the host. - `wiregu...

(UNLIKELY_OPENING_PUNCTUATION)

---

[uncategorized] ~11-~11: Loose punctuation mark.
Context: ...he host. - `wireguard_interface_address`: The address of the node inside the netw...

(UNLIKELY_OPENING_PUNCTUATION)

---

[uncategorized] ~12-~12: Loose punctuation mark.
Context: ...inside the network. - `wireguard_pubkey`: The public key for Wireguard. - `wiregu...

(UNLIKELY_OPENING_PUNCTUATION)

---

[uncategorized] ~13-~13: Loose punctuation mark.
Context: ...key for Wireguard. - `wireguard_privkey`: The private key for Wireguard. - `wireg...

(UNLIKELY_OPENING_PUNCTUATION)

---

[uncategorized] ~14-~14: Loose punctuation mark.
Context: ...y for Wireguard. - `wireguard_hostgroup`: The host group from your inventory whic...

(UNLIKELY_OPENING_PUNCTUATION)

---

[uncategorized] ~14-~14: Possible missing comma found.
Context: ...rd_hostgroup`: The host group from your inventory which contains all the hosts that shoul...

(AI_HYDRA_LEO_MISSING_COMMA)

</details>

</details>

---

`38-53`: **Example usage is clear and correct**  
The `yaml` code block illustrates the playbook usage and matches the variable names defined above.

</details>
<details>
<summary>roles/firewall/README.md (4)</summary>

`1-3`: **Header and introduction are concise**  
The title and description succinctly state the role’s responsibility.

---

`5-7`: **Configuration heading and introduction are clear**  
The “## Configuration” section properly frames the variable requirements.

---

`35-37`: **Example usage heading is well-placed**  
The “## Example Usage” section and intro sentence appropriately describe the sample playbook context.

---

`39-45`: **Example playbook is correct and formatted**  
The `yaml` code block is properly indented and demonstrates the role invocation accurately.

</details>
<details>
<summary>roles/pyris/README.md (7)</summary>

`1-3`: **Header and overview are clear**  
The title and initial description effectively convey the Pyris role’s functionality.

---

`5-7`: **Configuration section introduction is solid**  
The “## Configuration” heading and explanatory text correctly guide users on where to define variables.

---

`9-12`: **Required variables list is clear**  
Each required variable is listed with an accurate description.

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 LanguageTool</summary>

[uncategorized] ~9-~9: Loose punctuation mark.
Context: ...d:  - `pyris_deployment_user_public_key`: The public key for the deployment user....

(UNLIKELY_OPENING_PUNCTUATION)

---

[uncategorized] ~10-~10: Loose punctuation mark.
Context: ...or the deployment user. - `pyris_config`: The configuration for Pyris. - `proxy_s...

(UNLIKELY_OPENING_PUNCTUATION)

---

[uncategorized] ~11-~11: Loose punctuation mark.
Context: ...or Pyris. - `proxy_ssl_certificate_path`: The path to the SSL certificate for the...

(UNLIKELY_OPENING_PUNCTUATION)

---

[uncategorized] ~12-~12: Loose punctuation mark.
Context: ...roxy. - `proxy_ssl_certificate_key_path`: The path to the SSL certificate key for...

(UNLIKELY_OPENING_PUNCTUATION)

</details>

</details>

---

`16-16`: **Variables heading is precise**  
The heading “### Variables that have to be configured for a single node installation:” clearly scopes the example.

---

`27-27`: **Usage note is helpful**  
The link to the Pyris config repository adds context for advanced configuration.

---

`29-31`: **Example Usage heading is clear**  
The “## Example Usage” section heading and intro text set the stage for the playbook snippet.

---

`33-42`: **Example playbook is well-formatted**  
The `yaml` snippet correctly demonstrates how to invoke the role with required vars.

</details>
<details>
<summary>roles/storage_client/README.md (5)</summary>

`1-3`: **Header and description are concise**  
The title and opening line succinctly explain the storage client’s purpose.

---

`5-7`: **Configuration heading and intro are clear**  
The “## Configuration” section sets expectations for required variables.

---

`9-14`: **Required variables list is comprehensive**  
All necessary variables are enumerated with precise descriptions.

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 LanguageTool</summary>

[uncategorized] ~9-~9: Loose punctuation mark.
Context: ...variables are required:  - `artemis_uid`: The UID for the Artemis user. - `artemi...

(UNLIKELY_OPENING_PUNCTUATION)

---

[uncategorized] ~10-~10: Loose punctuation mark.
Context: ...ID for the Artemis user. - `artemis_gid`: The GID for the Artemis group. - `artem...

(UNLIKELY_OPENING_PUNCTUATION)

---

[uncategorized] ~11-~11: Loose punctuation mark.
Context: ... for the Artemis group. - `artemis_user`: The name of the Artemis user. - `artemi...

(UNLIKELY_OPENING_PUNCTUATION)

---

[uncategorized] ~12-~12: Loose punctuation mark.
Context: ...e of the Artemis user. - `artemis_group`: The name of the Artemis group. - `stora...

(UNLIKELY_OPENING_PUNCTUATION)

---

[uncategorized] ~13-~13: Loose punctuation mark.
Context: ...rtemis group. - `storage_server_address`: The address of the storage server. - `s...

(UNLIKELY_OPENING_PUNCTUATION)

---

[uncategorized] ~14-~14: Loose punctuation mark.
Context: ...f the storage server. - `storage_export`: The path to the NFS export on the stora...

(UNLIKELY_OPENING_PUNCTUATION)

</details>

</details>

---

`30-32`: **Example Usage heading is appropriate**  
The example section heading clearly indicates its purpose.

---

`34-45`: **Example playbook is correct and formatted**  
The `yaml` code block accurately illustrates how to apply the role with required vars.

</details>
<details>
<summary>roles/storage_provider/README.md (3)</summary>

`1-4`: **Documentation introduction is clear and concise.**  
The role description effectively summarizes the purpose of the `storage_provider` role.

---

`5-17`: **Configuration section is well-structured and informative.**  
Listing required variables with descriptions and pointing users to `defaults/main.yml` provides clear guidance.

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 LanguageTool</summary>

[uncategorized] ~9-~9: Loose punctuation mark.
Context: ...variables are required:  - `artemis_uid`: The UID for the Artemis user. - `artemi...

(UNLIKELY_OPENING_PUNCTUATION)

---

[uncategorized] ~10-~10: Loose punctuation mark.
Context: ...ID for the Artemis user. - `artemis_gid`: The GID for the Artemis group. - `artem...

(UNLIKELY_OPENING_PUNCTUATION)

---

[uncategorized] ~11-~11: Loose punctuation mark.
Context: ... for the Artemis group. - `artemis_user`: The name of the Artemis user. - `artemi...

(UNLIKELY_OPENING_PUNCTUATION)

---

[uncategorized] ~12-~12: Loose punctuation mark.
Context: ...e of the Artemis user. - `artemis_group`: The name of the Artemis group. - `stora...

(UNLIKELY_OPENING_PUNCTUATION)

---

[uncategorized] ~13-~13: Loose punctuation mark.
Context: ...of the Artemis group. - `storage_export`: The path to the NFS export. - `storage_...

(UNLIKELY_OPENING_PUNCTUATION)

---

[uncategorized] ~14-~14: Loose punctuation mark.
Context: ...h to the NFS export. - `storage_network`: The network address for the storage. - ...

(UNLIKELY_OPENING_PUNCTUATION)

---

[uncategorized] ~15-~15: Loose punctuation mark.
Context: ... the storage. - `storage_server_address`: The address of the storage server.  Def...

(UNLIKELY_OPENING_PUNCTUATION)

</details>

</details>

---

`32-48`: **Example usage snippet is clear.**  
The provided playbook example uses proper YAML syntax and mirrors the configuration section.

</details>
<details>
<summary>roles/broker/README.md (3)</summary>

`1-4`: **Header and description are accurate.**  
The title and introductory line correctly describe the broker role and its ActiveMQ configuration for Artemis.

---

`5-13`: **Configuration section is comprehensive.**  
Required variables are clearly listed and the reference to `defaults/main.yml` guides users to defaults.

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 LanguageTool</summary>

[uncategorized] ~9-~9: Loose punctuation mark.
Context: ... variables are required:  - `broker.url`: The hostname of the broker. - `broker.u...

(UNLIKELY_OPENING_PUNCTUATION)

---

[uncategorized] ~10-~10: Loose punctuation mark.
Context: ...tname of the broker. - `broker.username`: The username for the broker. - `broker....

(UNLIKELY_OPENING_PUNCTUATION)

---

[uncategorized] ~11-~11: Loose punctuation mark.
Context: ...name for the broker. - `broker.password`: The password for the broker.  Default v...

(UNLIKELY_OPENING_PUNCTUATION)

</details>

</details>

---

`24-37`: **Example usage is correctly formatted.**  
The playbook example with `yaml` fencing helps users quickly adapt the role.

</details>
<details>
<summary>roles/artemis/README.md (3)</summary>

`1-4`: **Header and introduction look good.**  
The role title and description provide a clear overview of what the `artemis` role accomplishes.

---

`5-8`: **Defaults reference is helpful.**  
Linking to `defaults/main.yml` gives users an immediate starting point for variable overrides.

---

`139-142`: **Example usage reference is apt.**  
Linking to the central repository for full examples keeps this role README focused and concise.

</details>

</blockquote></details>

</details>

<!-- This is an auto-generated comment by CodeRabbit for review status -->
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-05-02T14:09:14Z
user: login: bensofficial
state: CHANGES_REQUESTED
author_association: MEMBER
submitted_at: 2025-05-02T14:10:26Z
user: login: coderabbitai[bot]
body: **Actionable comments posted: 0**

<details>
<summary>🧹 Nitpick comments (5)</summary><blockquote>

<details>
<summary>roles/artemis/README.md (5)</summary><blockquote>

`1-4`: **Consider adding prerequisites and compatibility details**  
The introduction clearly explains the role’s purpose, but users would benefit from a “Prerequisites” section that specifies supported OS distributions, required Ansible versions, and any external dependencies. This helps set expectations before configuring the role.

---

`9-9`: **Remove trailing punctuation in heading**  
To comply with markdownlint MD026 (no trailing punctuation in headings), please remove the colon at the end of this heading:  
```diff
- ### Variables that have to be configured for a single node installation:
+ ### Variables that have to be configured for a single node installation
```  
 [md026]

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 markdownlint-cli2 (0.17.2)</summary>

9-9: Trailing punctuation in heading
Punctuation: ':'

(MD026, no-trailing-punctuation)

</details>

</details>

---

`11-133`: **Add language identifiers to fenced code blocks**  
Multiple code fences in this file lack a language specifier, which improves readability and satisfies MD040. For example, at lines 11, 28, 37, 46, 62, 79, 92, 100, 107, 118, 126, and 132, replace:  
```diff
- ```
+ ```yaml
```  
This will enable syntax highlighting for all YAML snippets.  
 [md040]

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 markdownlint-cli2 (0.17.2)</summary>

11-11: Fenced code blocks should have a language specified
null

(MD040, fenced-code-language)

---

28-28: Fenced code blocks should have a language specified
null

(MD040, fenced-code-language)

---

37-37: Fenced code blocks should have a language specified
null

(MD040, fenced-code-language)

---

46-46: Fenced code blocks should have a language specified
null

(MD040, fenced-code-language)

---

62-62: Fenced code blocks should have a language specified
null

(MD040, fenced-code-language)

---

79-79: Fenced code blocks should have a language specified
null

(MD040, fenced-code-language)

---

92-92: Fenced code blocks should have a language specified
null

(MD040, fenced-code-language)

---

100-100: Fenced code blocks should have a language specified
null

(MD040, fenced-code-language)

---

107-107: Fenced code blocks should have a language specified
null

(MD040, fenced-code-language)

---

118-118: Fenced code blocks should have a language specified
null

(MD040, fenced-code-language)

---

126-126: Fenced code blocks should have a language specified
null

(MD040, fenced-code-language)

---

132-132: Fenced code blocks should have a language specified
null

(MD040, fenced-code-language)

</details>

</details>

---

`123-123`: **Use hyphen in “multi-node”**  
For consistency and proper compound adjective formatting, please add a hyphen:  
```diff
- ### Additional Variables for multi node installations
+ ### Additional Variables for multi-node installations
```

---

`141-141`: **Convert bare URL to Markdown link**  
Bare URLs hurt readability and violate MD034. Use a Markdown link instead:  
```diff
- Please refer to https://github.com/ls1intum/artemis-ansible for concrete examples.
+ Please refer to [Artemis Ansible examples](https://github.com/ls1intum/artemis-ansible) for concrete examples.
```  
 [md034]

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 markdownlint-cli2 (0.17.2)</summary>

141-141: Bare URL used
null

(MD034, no-bare-urls)

</details>

</details>

</blockquote></details>

</blockquote></details>

<details>
<summary>📜 Review details</summary>

**Configuration used: CodeRabbit UI**
**Review profile: CHILL**
**Plan: Pro**

<details>
<summary>📥 Commits</summary>

Reviewing files that changed from the base of the PR and between 7542d1ae0cca1e14793e5e3afdc9a87ed4aa4ece and 6a0632550f6bf7e555c0ac9058228f4b5ed5adda.

</details>

<details>
<summary>📒 Files selected for processing (1)</summary>

* `roles/artemis/README.md` (2 hunks)

</details>

<details>
<summary>🧰 Additional context used</summary>

<details>
<summary>🪛 markdownlint-cli2 (0.17.2)</summary>

<details>
<summary>roles/artemis/README.md</summary>

9-9: Trailing punctuation in heading
Punctuation: ':'

(MD026, no-trailing-punctuation)

---

11-11: Fenced code blocks should have a language specified
null

(MD040, fenced-code-language)

---

28-28: Fenced code blocks should have a language specified
null

(MD040, fenced-code-language)

---

37-37: Fenced code blocks should have a language specified
null

(MD040, fenced-code-language)

---

46-46: Fenced code blocks should have a language specified
null

(MD040, fenced-code-language)

---

62-62: Fenced code blocks should have a language specified
null

(MD040, fenced-code-language)

---

79-79: Fenced code blocks should have a language specified
null

(MD040, fenced-code-language)

---

92-92: Fenced code blocks should have a language specified
null

(MD040, fenced-code-language)

---

100-100: Fenced code blocks should have a language specified
null

(MD040, fenced-code-language)

---

107-107: Fenced code blocks should have a language specified
null

(MD040, fenced-code-language)

---

118-118: Fenced code blocks should have a language specified
null

(MD040, fenced-code-language)

---

126-126: Fenced code blocks should have a language specified
null

(MD040, fenced-code-language)

---

132-132: Fenced code blocks should have a language specified
null

(MD040, fenced-code-language)

---

141-141: Bare URL used
null

(MD034, no-bare-urls)

</details>

</details>

</details>

</details>

<!-- This is an auto-generated comment by CodeRabbit for review status -->
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-05-02T14:25:35Z
user: login: Mtze
state: APPROVED
author_association: MEMBER
submitted_at: 2025-05-06T09:51:21Z

Review comments:
diff_hunk: @@ -124,62 +74,68 @@ LocalCI configuration:
       expiry_days: 3
       schedule_time: "0 0 4 * * *"
 ```
----
 
+Jenkins configuration:
+```
+continuous_integration:
+  jenkins:
+    url: "https://jenkins.example.com"
+    user: "jenkins_user"
+    password: "jenkins_password"
+    secret_push_token: "jenkins_secret_push_token"
+    vcs_credentials: "jenkins_vcs_credentials"
+    artemis_auth_token_key: "jenkins_artemis_auth_token_key"
+    artemis_auth_token_value: "jenkins_artemis_auth_token_value"
+```
 
 Athena configuration:
 ```
 athena:
-  url:
-  secret:
-  restricted_modules: # optional parameter to restrict access to specific modules, e.g. module_text_llm,module_programming_llm
+  url: "https://athena.example.com"
+  secret: "athena_secret"
+  restricted_modules: "module_text_llm,module_programming_llm" # optional parameter to restrict access to specific modules
 ```
----
 
-Apollon configuration:
+Iris configuration:
 ```
-apollon_url: #https://apollon.ase.in.tum.de/api/converter
+iris:
+  url: "https://iris.example.com"
+  secret: "iris_secret"
 ```
----
 
 Mail configuration:
 ```
 mail:
-  host:
-  port:
-  user:
-  password:
-  protocol:
-  ssl_trust:
+  host: "smtp.example.com"
+  port: 587
+  user: "smtp_user"
+  password: "smtp_password"
+  protocol: "smtp"
+  ssl_trust: "smtp.example.com"
 ```
 
----
-
 LTI configuration:
 ```
 lti:
-  oauth_secret:
+  oauth_secret: "lti_oauth_secret"
 ```
 
-### Additional Variables for multi node installtions
+### Additional Variables for multi node installations
 
 Registry Configuration:
 ```
-artemis_jhipster_registry_password: #FIXME Multinode
-
+artemis_jhipster_registry_password: "your_registry_password" #FIXME Multinode
path: roles/artemis/README.md
user: login: Copilot
body: Remove or update the '#FIXME Multinode' marker in the example configuration to prevent confusion for users.
```suggestion
artemis_jhipster_registry_password: "your_registry_password" # Set this to the password for the JHipster registry in a multi-node setup
```
created_at: 2025-05-02T14:05:35Z
author_association: CONTRIBUTOR
diff_hunk: @@ -1,116 +1,66 @@
-Artemis
-=========
+# Artemis
 
-This role installs artemis on a host. The role supports single node installations as well as multi node installations.
+This role installs Artemis on a host. The role supports single node installations as well as multi node installations.
+
+## Role Variables and Configuration
 
-Role Variables
---------------
 Default variables can be found in the `defaults/main.yml` file.
 
 ### Variables that have to be configured for a single node installation:
 
 ```
 artemis_server_url: "https://artemis.example.de"
path: roles/artemis/README.md
user: login: bensofficial
body: ```suggestion
artemis_server_url: "https://artemis.example.com"
```
created_at: 2025-05-02T14:08:39Z
author_association: MEMBER
diff_hunk: @@ -1,116 +1,66 @@
-Artemis
-=========
+# Artemis
 
-This role installs artemis on a host. The role supports single node installations as well as multi node installations.
+This role installs Artemis on a host. The role supports single node installations as well as multi node installations.
+
+## Role Variables and Configuration
 
-Role Variables
---------------
 Default variables can be found in the `defaults/main.yml` file.
 
 ### Variables that have to be configured for a single node installation:
 
 ```
 artemis_server_url: "https://artemis.example.de"
-artemis_database_password: #FIXME
-
-artemis_internal_admin_password: #FIXME
+artemis_database_password: "your_database_password"
 
-proxy_ssl_certificate_path: #FIXME
-proxy_ssl_certificate_key_path: #FIXME
+artemis_internal_admin_password: "your_admin_password"
 
-artemis_jhipster_jwt: #FIXME
+proxy_ssl_certificate_path: "/path/to/ssl_certificate"
+proxy_ssl_certificate_key_path: "/path/to/ssl_certificate_key"
 
+artemis_jhipster_jwt: "your_jwt_secret"
 ```
 
 The JWT secret can be generated with: `openssl rand -base64 64 | tr -d '\n'`.
 
-
 ### Additional Variables for external systems
-To configure LDAP access for artemis, add the following variables:
+
+To configure LDAP access for Artemis, add the following variables:
 ```
 ldap:
   url: "ldaps://iauth.tum.de:636"
   user_dn: "cn=TUINI01-Artemis,ou=bindDNs,ou=iauth,dc=tum,dc=de"
   base: "ou=users,ou=data,ou=prod,ou=iauth,dc=tum,dc=de"
-  password:
+  password: "your_ldap_password"
 ```
----
-
-To configure Jira as user management server add:
 
+To allow internal user registration:
 ```
 user_management:
-  jira:
-    url:
-    user:
-    password:
-    admin_group: # Jira group that will have admin access in the artemis web ui
-```
-
-To allow internal user registration: 
-```
-user_management: 
-  registration: 
+  registration:
     allowed_email_pattern:  ([a-zA-Z0-9_\-\.\+]+)@((tum\.de)|(in\.tum\.de)|(mytum\.de))
     allowed_email_pattern_readable: '@tum.de, @in.tum.de, @mytum.de'
     cleanup_time_minutes: 2
 ```
----
-
-Bitbucket configuration:
-```
-
-bitbucket_hostname: bitbucket.example.com
-version_control:
-  bitbucket:
-    url: "https://{{ bitbucket_hostname }}"
-    ssh_url: "ssh://git@{{ bitbucket_hostname }}:7999"
-    token:
-```
----
-
-Bamboo configuration:
-```
-continuous_integration:
-  bamboo:
-    url:
-    token:
-    bitbucket_link_name:
-    result_plugin_token:
-```
----
-
-Gitlab configuration:
-```
-version_control:
 
-  gitlab:
-    url: 
-    user: 
-    password: 
-    token: # Access token for $user
-    ci_token: # Jenkins secret push token
-    health_api_token: # Access token for health API
-    ssh_url: # Full SSH clone URL 
+LocalVC configuration:
 ```
----
-
-
-Jenkins configuration:
+localvc:
+  url: "https://localvc.example.com"
path: roles/artemis/README.md
user: login: bensofficial
body: ```suggestion
  url: "https://artemis.example.com"
```
created_at: 2025-05-02T14:08:58Z
author_association: MEMBER
diff_hunk: @@ -1,116 +1,66 @@
-Artemis
-=========
+# Artemis
 
-This role installs artemis on a host. The role supports single node installations as well as multi node installations.
+This role installs Artemis on a host. The role supports single node installations as well as multi node installations.
+
+## Role Variables and Configuration
 
-Role Variables
---------------
 Default variables can be found in the `defaults/main.yml` file.
 
 ### Variables that have to be configured for a single node installation:
 
 ```
 artemis_server_url: "https://artemis.example.de"
-artemis_database_password: #FIXME
-
-artemis_internal_admin_password: #FIXME
+artemis_database_password: "your_database_password"
 
-proxy_ssl_certificate_path: #FIXME
-proxy_ssl_certificate_key_path: #FIXME
+artemis_internal_admin_password: "your_admin_password"
 
-artemis_jhipster_jwt: #FIXME
+proxy_ssl_certificate_path: "/path/to/ssl_certificate"
+proxy_ssl_certificate_key_path: "/path/to/ssl_certificate_key"
 
+artemis_jhipster_jwt: "your_jwt_secret"
 ```
 
 The JWT secret can be generated with: `openssl rand -base64 64 | tr -d '\n'`.
 
-
 ### Additional Variables for external systems
-To configure LDAP access for artemis, add the following variables:
+
+To configure LDAP access for Artemis, add the following variables:
 ```
 ldap:
   url: "ldaps://iauth.tum.de:636"
   user_dn: "cn=TUINI01-Artemis,ou=bindDNs,ou=iauth,dc=tum,dc=de"
   base: "ou=users,ou=data,ou=prod,ou=iauth,dc=tum,dc=de"
-  password:
+  password: "your_ldap_password"
 ```
----
-
-To configure Jira as user management server add:
 
+To allow internal user registration:
 ```
 user_management:
-  jira:
-    url:
-    user:
-    password:
-    admin_group: # Jira group that will have admin access in the artemis web ui
-```
-
-To allow internal user registration: 
-```
-user_management: 
-  registration: 
+  registration:
     allowed_email_pattern:  ([a-zA-Z0-9_\-\.\+]+)@((tum\.de)|(in\.tum\.de)|(mytum\.de))
     allowed_email_pattern_readable: '@tum.de, @in.tum.de, @mytum.de'
     cleanup_time_minutes: 2
 ```
----
-
-Bitbucket configuration:
-```
-
-bitbucket_hostname: bitbucket.example.com
-version_control:
-  bitbucket:
-    url: "https://{{ bitbucket_hostname }}"
-    ssh_url: "ssh://git@{{ bitbucket_hostname }}:7999"
-    token:
-```
----
-
-Bamboo configuration:
-```
-continuous_integration:
-  bamboo:
-    url:
-    token:
-    bitbucket_link_name:
-    result_plugin_token:
-```
----
-
-Gitlab configuration:
-```
-version_control:
 
-  gitlab:
-    url: 
-    user: 
-    password: 
-    token: # Access token for $user
-    ci_token: # Jenkins secret push token
-    health_api_token: # Access token for health API
-    ssh_url: # Full SSH clone URL 
+LocalVC configuration:
 ```
----
-
-
-Jenkins configuration:
+localvc:
+  url: "https://localvc.example.com"
+  repo_storage_base_path: "/path/to/repo_storage"
+  use_version_control_access_token: false
+  ssh_key_path: "/opt/artemis/ssh-keys" # Key path for the SSH host keys
+  build_agent_use_ssh: true # Setting whether SSH should be used.
+  ssh_url: "ssh://git@hostname.artemis.cit.tum.de:7921/" # URL template for SSH clone operations.
path: roles/artemis/README.md
user: login: bensofficial
body: ```suggestion
  ssh_url: "ssh://git@artemis.example.com:7921/" # URL template for SSH clone operations.
```
created_at: 2025-05-02T14:09:14Z
author_association: MEMBER

PR comments:
user: login: coderabbitai[bot]
created_at: 2025-05-02T14:03:18Z
body: <!-- This is an auto-generated comment: summarize by coderabbit.ai -->
<!-- walkthrough_start -->

## Walkthrough

The documentation for multiple Ansible roles was extensively revised and expanded. Each role's README was restructured to improve clarity, completeness, and usability. The changes include the addition of explicit configuration sections listing required variables with descriptions and example values, the introduction of sample Ansible playbook usage snippets, and corrections to formatting and typographical errors. The documentation now provides clearer guidance on configuring and applying each role, with placeholder or example values replacing previously empty or commented-out sections. No changes were made to exported or public code entities; all modifications are limited to documentation content.

## Changes

| File(s)                                      | Change Summary                                                                                                    |
|----------------------------------------------|------------------------------------------------------------------------------------------------------------------|
| roles/artemis/README.md                      | Rewrote and expanded documentation: clarified configuration examples, added example values, reorganized sections, and included usage instructions. |
| roles/broker/README.md                       | Revised documentation: clarified variables, added example values, corrected typos, and added example usage.      |
| roles/db_backup/README.md                    | Updated documentation: improved formatting, clarified configuration, and added example usage section.            |
| roles/firewall/README.md                     | Restructured and expanded documentation: clarified variables, improved formatting, and added example usage.      |
| roles/jenkins/README.md                      | Expanded documentation: detailed configuration section, added example usage, and improved structure.             |
| roles/legal/README.md                        | Expanded and restructured documentation: added configuration and example usage sections.                         |
| roles/mysqld_exporter/README.md              | Significantly expanded documentation: clarified configuration, added explicit variables, and provided usage example. |
| roles/proxy/README.md                        | Completely rewrote documentation: detailed role purpose, comprehensive configuration, and example usage.         |
| roles/pyris/README.md                        | Expanded and restructured documentation: added configuration and example usage sections with sample values.      |
| roles/registry/README.md                     | Restructured and expanded documentation: clarified required variables and added example usage.                   |
| roles/storage_client/README.md               | Revised documentation: clarified mount path, added configuration and example usage sections.                     |
| roles/storage_provider/README.md             | Expanded documentation: detailed introduction, configuration, and example usage sections.                        |
| roles/wireguard/README.md                    | Extensively rewrote documentation: clarified variables, improved formatting, and added example usage.            |

## Possibly related PRs

- ls1intum/artemis-ansible-collection#124: Updates README documentation related to Artemis roles, improving clarity and examples around version control and CI configurations, closely related in documentation content.

## Suggested labels

`role.artemis`, `role.broker`, `role.proxy`, `role.registry`

## Poem

> 🐇  
> In README fields, I hop and play,  
> With clearer guides to light your way.  
> Examples bloom where blanks once grew,  
> Each role now tells just what to do.  
> From proxy paths to Wireguard keys,  
> Documentation’s now a breeze—  
> Hop along, deploy with ease!  
>

<!-- walkthrough_end -->
<!-- internal state start -->


<!-- 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 -->

<!-- internal state end -->
<!-- tips_start -->

---

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

<details>
<summary>❤️ Share</summary>

- [X](https://twitter.com/intent/tweet?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A&url=https%3A//coderabbit.ai)
- [Mastodon](https://mastodon.social/share?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A%20https%3A%2F%2Fcoderabbit.ai)
- [Reddit](https://www.reddit.com/submit?title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&text=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code.%20Check%20it%20out%3A%20https%3A//coderabbit.ai)
- [LinkedIn](https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fcoderabbit.ai&mini=true&title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&summary=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code)

</details>

<details>
<summary>🪧 Tips</summary>

### Chat

There are 3 ways to chat with [CodeRabbit](https://coderabbit.ai?utm_source=oss&utm_medium=github&utm_campaign=ls1intum/artemis-ansible-collection&utm_content=136):

- Review comments: Directly reply to a review comment made by CodeRabbit. Example:
  - `I pushed a fix in commit <commit_id>, please review it.`
  - `Generate unit testing code for this file.`
  - `Open a follow-up GitHub issue for this discussion.`
- Files and specific lines of code (under the "Files changed" tab): Tag `@coderabbitai` in a new review comment at the desired location with your query. Examples:
  - `@coderabbitai generate unit testing code for this file.`
  -	`@coderabbitai modularize this function.`
- PR comments: Tag `@coderabbitai` in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
  - `@coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.`
  - `@coderabbitai read src/utils.ts and generate unit testing code.`
  - `@coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.`
  - `@coderabbitai help me debug CodeRabbit configuration file.`

### Support

Need help? Create a ticket on our [support page](https://www.coderabbit.ai/contact-us/support) for assistance with any issues or questions.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

### CodeRabbit Commands (Invoked using PR comments)

- `@coderabbitai pause` to pause the reviews on a PR.
- `@coderabbitai resume` to resume the paused reviews.
- `@coderabbitai review` to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
- `@coderabbitai full review` to do a full review from scratch and review all the files again.
- `@coderabbitai summary` to regenerate the summary of the PR.
- `@coderabbitai generate docstrings` to [generate docstrings](https://docs.coderabbit.ai/finishing-touches/docstrings) for this PR.
- `@coderabbitai generate sequence diagram` to generate a sequence diagram of the changes in this PR.
- `@coderabbitai resolve` resolve all the CodeRabbit review comments.
- `@coderabbitai configuration` to show the current CodeRabbit configuration for the repository.
- `@coderabbitai help` to get help.

### Other keywords and placeholders

- Add `@coderabbitai ignore` anywhere in the PR description to prevent this PR from being reviewed.
- Add `@coderabbitai summary` to generate the high-level summary at a specific location in the PR description.
- Add `@coderabbitai` anywhere in the PR title to generate the title automatically.

### CodeRabbit Configuration File (`.coderabbit.yaml`)

- You can programmatically configure CodeRabbit by adding a `.coderabbit.yaml` file to the root of your repository.
- Please see the [configuration documentation](https://docs.coderabbit.ai/guides/configure-coderabbit) for more information.
- If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: `# yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json`

### Documentation and Community

- Visit our [Documentation](https://docs.coderabbit.ai) for detailed information on how to use CodeRabbit.
- Join our [Discord Community](http://discord.gg/coderabbit) to get help, request features, and share feedback.
- Follow us on [X/Twitter](https://twitter.com/coderabbitai) for updates and announcements.

</details>

<!-- tips_end -->
author_association: CONTRIBUTOR
user: login: Hialus
created_at: 2025-05-02T14:05:15Z
body: @coderabbitai review
author_association: CONTRIBUTOR
user: login: coderabbitai[bot]
created_at: 2025-05-02T14:05:20Z
body: <!-- This is an auto-generated reply by CodeRabbit -->
<details>
<summary>✅ Actions performed</summary>

Review triggered.

> Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

</details>
author_association: CONTRIBUTOR
user: login: Mtze
created_at: 2025-05-06T09:51:32Z
body: Changes are looking good to me 
author_association: MEMBER