diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
new file mode 100644
index 0000000000000000000000000000000000000000..d348cf21fedd13282ce91d9cb476deefea5a4367
--- /dev/null
+++ b/.gitlab-ci.yml
@@ -0,0 +1,15 @@
+---
+stages:
+  - linting
+
+cache:
+  paths:
+    - .cache
+
+ansible-lint:
+  stage: linting
+  image:
+    name: registry.gitlab.fachschaften.org/fsi-ansible/ci-docker-image:latest
+    entrypoint: [""]
+  script:
+    - ansible-lint -v --offline
diff --git a/defaults/main.yml b/defaults/main.yml
index 285f0e414bfb3b1b09c1a24fcd3bf7380b9bdb44..c7837fc56b19880e87231ec4d2ce0d9352bbb83f 100644
--- a/defaults/main.yml
+++ b/defaults/main.yml
@@ -1,2 +1,2 @@
 ---
-# defaults file for .
\ No newline at end of file
+# defaults file for .
diff --git a/handlers/main.yml b/handlers/main.yml
index 0c2fb93a59ae44a60c03bf6041d07c723f549a69..06947324ccfdfd28f5795805cbd51f9526f16624 100644
--- a/handlers/main.yml
+++ b/handlers/main.yml
@@ -1,5 +1,5 @@
 ---
 - name: restart nginx
-  service:
+  ansible.builtin.service:
     name: nginx
-    state: restarted
\ No newline at end of file
+    state: restarted
diff --git a/meta/main.yml b/meta/main.yml
index c975cd71f9f8adb7c5961ef7c77b2b3c0f546624..a5a79242b92f2dfb1c9903e914a2c449d20d67d9 100644
--- a/meta/main.yml
+++ b/meta/main.yml
@@ -15,7 +15,7 @@ galaxy_info:
   # - CC-BY-4.0
   license: BSD-3-Clause
 
-  min_ansible_version: 2.9
+  min_ansible_version: "2.9"
 
   # If this a Container Enabled role, provide the minimum Ansible Container version.
   # min_ansible_container_version:
@@ -27,10 +27,9 @@ galaxy_info:
   # https://galaxy.ansible.com/api/v1/platforms/
   #
   platforms:
-  - name: Ubuntu
-    versions:
-      - 18.04
-      - 20.04
+    - name: Ubuntu
+      versions:
+        - all
 
   galaxy_tags: []
     # List tags for your role here, one per line. A tag is a keyword that describes
diff --git a/tasks/main.yml b/tasks/main.yml
index c3f7777a308278199003000801443b87341046c9..b8544cf754cf223b20f1a0e88e64a0a24f94e14e 100644
--- a/tasks/main.yml
+++ b/tasks/main.yml
@@ -1,34 +1,35 @@
 ---
 - name: Install dependencies.
-  apt:
+  ansible.builtin.apt:
     name:
       - gpg-agent
     state: present
-    update-cache: yes
+    update-cache: true
   when: ansible_distribution_release == 'focal'
 
 - name: Add official nginx APT key
-  apt_key:
+  ansible.builtin.apt_key:
     url: http://nginx.org/keys/nginx_signing.key
 
 - name: Add official nginx repository
-  apt_repository:
+  ansible.builtin.apt_repository:
     repo: "deb http://nginx.org/packages/mainline/ubuntu {{ ansible_distribution_release }} nginx"
 
 - name: Install nginx
-  apt:
+  ansible.builtin.apt:
     name: nginx
     state: present
 
 - name: Remove default page
-  file:
+  ansible.builtin.file:
     path: /etc/nginx/conf.d/default.conf
     state: absent
   notify: restart nginx
 
 - name: Copy nginx config
-  copy:
+  ansible.builtin.copy:
     src: "{{ item }}"
     dest: /etc/nginx/
+    mode: 0644
   with_fileglob: files/*
   notify: restart nginx
diff --git a/vars/main.yml b/vars/main.yml
index b9f336c00ac755d691f6c0512753c4e0422aab77..a38c5fb0425b14b71089882ddc0984cf60a9d5c1 100644
--- a/vars/main.yml
+++ b/vars/main.yml
@@ -1,2 +1,2 @@
 ---
-# vars file for .
\ No newline at end of file
+# vars file for .