diff --git a/handlers/main.yml b/handlers/main.yml
index ae2cbcd16bc869fca8bbde141c105af6e7f951ae..6b5aa5a339313ef55a2a8082eb88601f89da1d88 100644
--- a/handlers/main.yml
+++ b/handlers/main.yml
@@ -1,5 +1,5 @@
 ---
 - name: restart gitlab
-  command: gitlab-ctl reconfigure
+  ansible.builtin.command: gitlab-ctl reconfigure
   register: gitlab_restart
   failed_when: 'gitlab_restart.rc != 0'
diff --git a/meta/main.yml b/meta/main.yml
index e7d06fcd66764cc0436cf53318d43d9fecfe7124..277f5a3d8e6d4cff731c21f9f47e5e60e327f2b8 100644
--- a/meta/main.yml
+++ b/meta/main.yml
@@ -1,3 +1,12 @@
 ---
-dependencies:
-  #- elasticsearch
+galaxy_info:
+  author: Fachschaft Informatik, TU Dortmund
+  description: Install Gitlab
+  license: MIT
+  min_ansible_version: "2.9"
+  platforms:
+    - name: Ubuntu
+      versions:
+        - all
+dependencies: []
+  # - elasticsearch
diff --git a/tasks/main.yml b/tasks/main.yml
index 4269ec754fd0a94b8540d02157301d24677f6096..c4d8fa5d0d1571247776fc5f0688ade454b6ff08 100644
--- a/tasks/main.yml
+++ b/tasks/main.yml
@@ -1,6 +1,6 @@
 ---
 - name: Create user and db on server
-  include_role:
+  ansible.builtin.include_role:
     name: postgresql_client
   vars:
     db_user:
@@ -11,38 +11,39 @@
   when: gitlab_external_postgres
 
 - name: Check if GitLab configuration file already exists.
-  stat: path=/etc/gitlab/gitlab.rb
+  ansible.builtin.stat: path=/etc/gitlab/gitlab.rb
   register: gitlab_config_file
 
 - name: Check if GitLab is already installed.
-  stat: path=/usr/bin/gitlab-ctl
+  ansible.builtin.stat: path=/usr/bin/gitlab-ctl
   register: gitlab_file
 
 # Install GitLab and its dependencies.
 - name: Download GitLab repository installation script.
-  get_url:
+  ansible.builtin.get_url:
     url: "{{ gitlab_repository_installation_script_url }}"
     dest: /tmp/gitlab_install_repository.sh
     validate_certs: "{{ gitlab_download_validate_certs }}"
+    mode: 0700
   when: not gitlab_file.stat.exists
 
 - name: Install GitLab repository
-  command: bash /tmp/gitlab_install_repository.sh
+  ansible.builtin.command: bash /tmp/gitlab_install_repository.sh
   when: not gitlab_file.stat.exists
 
 - name: Add GitLab apt signing key
-  apt_key:
+  ansible.builtin.apt_key:
     id: F6403F6544A38863DAA0B6E03F01618A51312F3F
     url: https://packages.gitlab.com/gpg.key
     state: present
 
 - name: Define the Gitlab package name.
-  set_fact:
+  ansible.builtin.set_fact:
     gitlab_package_name: "{{ gitlab_edition }}{{ gitlab_package_version_separator }}{{ gitlab_version }}"
   when: gitlab_version|length > 0
 
 - name: Install GitLab
-  package:
+  ansible.builtin.package:
     name: "{{ gitlab_package_name | default(gitlab_edition) }}"
     state: present
   when: not gitlab_file.stat.exists
@@ -50,13 +51,13 @@
 # Start and configure GitLab. Sometimes the first run fails, but after that,
 # restarts fix problems, so ignore failures on this run.
 - name: Reconfigure GitLab (first run).
-  command: >
+  ansible.builtin.command: >
     gitlab-ctl reconfigure
     creates=/var/opt/gitlab/bootstrapped
   failed_when: false
 
 - name: Copy GitLab configuration file.
-  template:
+  ansible.builtin.template:
     src: "{{ inventory_hostname }}/gitlab.rb.j2"
     dest: /etc/gitlab/gitlab.rb
     owner: root
@@ -65,20 +66,21 @@
   notify: restart gitlab
 
 - name: Copy gitlab-dump service
-  template:
+  ansible.builtin.template:
     src: gitlab_dump.service.j2
     dest: /etc/systemd/system/gitlab_dump.service
+    mode: 0644
   when: gitlab_use_borgbackup
 
 - name: Enable gitlab-dump service
-  systemd:
+  ansible.builtin.systemd:
     name: "gitlab_dump.service"
-    enabled: yes
-    daemon_reload: yes
+    enabled: true
+    daemon_reload: true
   when: gitlab_use_borgbackup
 
 - name: Configure backups
-  include_role:
+  ansible.builtin.include_role:
     name: borgbackup_client
   vars:
     borgbackup_source_dirs:
@@ -92,53 +94,56 @@
 
 - name: Install postgres client binaries
   block:
-  - name: PostgreSQL | Make sure the CA certificates are available
-    apt:
-      pkg: ca-certificates
-      state: present
-
-  - name: PostgreSQL | Add PostgreSQL repository apt-key
-    apt_key:
-      id: "{{ postgresql_apt_key_id }}"
-      url: "{{ postgresql_apt_key_url }}"
-      state: present
-
-  - name: PostgreSQL | Add PostgreSQL repository
-    apt_repository:
-      repo: "{{ postgresql_apt_repository }}"
-      state: present
-
-  - name: PostgreSQL | Add PostgreSQL repository preferences
-    template:
-      src: etc_apt_preferences.d_apt_postgresql_org_pub_repos_apt.pref.j2
-      dest: /etc/apt/preferences.d/apt_postgresql_org_pub_repos_apt.pref
-
-  - name: PostgreSQL | Install PostgreSQL client tools
-    apt:
-      name:
-        - "postgresql-client-{{ postgresql_version }}"
-      state: present
-      update_cache: yes
-      default_release: "{{ postgresql_default_release | default(ansible_distribution_release + '-pgdg') }}"
-
-  - name: Create links in /opt/gitlab/bin/
-    file:
-      src: '/usr/bin/{{ item }}'
-      dest: '/opt/gitlab/bin/{{ item }}'
-      state: link
-    with_items:
-      - pg_dump
-      - psql
-  when: gitlab_external_postgres
+    - name: PostgreSQL | Make sure the CA certificates are available
+      ansible.builtin.apt:
+        pkg: ca-certificates
+        state: present
+
+    - name: PostgreSQL | Add PostgreSQL repository apt-key
+      ansible.builtin.apt_key:
+        id: "{{ postgresql_apt_key_id }}"
+        url: "{{ postgresql_apt_key_url }}"
+        state: present
+
+    - name: PostgreSQL | Add PostgreSQL repository
+      ansible.builtin.apt_repository:
+        repo: "{{ postgresql_apt_repository }}"
+        state: present
+
+    - name: PostgreSQL | Add PostgreSQL repository preferences
+      ansible.builtin.template:
+        src: etc_apt_preferences.d_apt_postgresql_org_pub_repos_apt.pref.j2
+        dest: /etc/apt/preferences.d/apt_postgresql_org_pub_repos_apt.pref
+        mode: 0644
+
+    - name: PostgreSQL | Install PostgreSQL client tools
+      ansible.builtin.apt:
+        name:
+          - "postgresql-client-{{ postgresql_version }}"
+        state: present
+        update_cache: true
+        default_release: "{{ postgresql_default_release | default(ansible_distribution_release + '-pgdg') }}"
+
+    - name: Create links in /opt/gitlab/bin/
+      ansible.builtin.file:
+        src: '/usr/bin/{{ item }}'
+        dest: '/opt/gitlab/bin/{{ item }}'
+        state: link
+        mode: 0777
+      with_items:
+        - pg_dump
+        - psql
+      when: gitlab_external_postgres
 
 - name: Copy registry cleanup service
-  copy:
+  ansible.builtin.copy:
     src: "{{ item }}"
     dest: "/etc/systemd/system/"
+    mode: 0644
   with_fileglob: "gitlab_registry_cleanup.*"
 
 - name: Enable registry cleanup timer
-  systemd:
+  ansible.builtin.systemd:
     name: gitlab_registry_cleanup.timer
     enabled: true
     state: started
diff --git a/tasks/plantuml.yml b/tasks/plantuml.yml
index fba37b77aac6602f05cab01f1a2ce897f2fead99..4c88a2de42c17491999309448f355b1984247b19 100644
--- a/tasks/plantuml.yml
+++ b/tasks/plantuml.yml
@@ -1,6 +1,6 @@
 ---
 - name: Install prerequisites for docker
-  apt:
+  ansible.builtin.apt:
     name:
       - apt-transport-https
       - ca-certificates
@@ -8,30 +8,30 @@
       - gnupg-agent
       - software-properties-common
     state: present
-    update_cache: yes
+    update_cache: true
 
 - name: Add docker key
-  apt_key:
+  ansible.builtin.apt_key:
     url: https://download.docker.com/linux/ubuntu/gpg
     state: present
 
 - name: Add docker repo
-  apt_repository:
+  ansible.builtin.apt_repository:
     repo: "deb [arch=amd64] https://download.docker.com/linux/ubuntu {{ ansible_lsb.codename }} stable"
     state: present
 
 - name: Install prerequisites for docker
-  apt:
+  ansible.builtin.apt:
     name:
       - docker-ce
       - docker-ce-cli
       - containerd.io
       - python3-docker
     state: present
-    update_cache: yes
+    update_cache: true
 
 - name: Start PlantUML docker container
-  docker_container:
+  ansible.builtin.docker_container:
     name: plantuml
     image: plantuml/plantuml-server:tomcat
     state: started