diff --git a/.ansible-lint b/.ansible-lint
new file mode 100644
index 0000000000000000000000000000000000000000..8d40d067c46c42adf88f5922bc7fc9c6407ce7bb
--- /dev/null
+++ b/.ansible-lint
@@ -0,0 +1,7 @@
+---
+warn_list:  # or 'skip_list' to silence them completely
+    - git-latest  # Git checkouts must contain explicit version
+    - ignore-errors  # Use failed_when and specify error conditions instead of using ignore_errors
+    - no-changed-when  # Commands should not change things if nothing needs doing
+    - no-handler  # Tasks that run when changed should likely be handlers
+    - package-latest  # Package installs should not use latest
diff --git a/.yamllint b/.yamllint
new file mode 100644
index 0000000000000000000000000000000000000000..fbebdb8c3eabfec06b071490a73331e2e80152fe
--- /dev/null
+++ b/.yamllint
@@ -0,0 +1,39 @@
+---
+# Based on ansible-lint config
+extends: default
+
+rules:
+    braces:
+        max-spaces-inside: 1
+        level: error
+    brackets:
+        max-spaces-inside: 1
+        level: error
+    colons:
+        max-spaces-after: -1
+        level: error
+    commas:
+        max-spaces-after: -1
+        level: error
+    # comments enable
+    comments: enable
+    comments-indentation: enable
+    document-start: enable
+    empty-lines:
+        max: 3
+        level: error
+    hyphens:
+        level: error
+    indentation:
+        level: warning
+        indent-sequences: consistent
+        spaces: 4
+        check-multi-line-strings: true
+    key-duplicates: enable
+    line-length: disable
+    new-line-at-end-of-file: enable
+    new-lines:
+        type: unix
+    # trailing-spaces enable
+    trailing-spaces: enable
+    truthy: enable
diff --git a/handlers/main.yml b/handlers/main.yml
index ec44ab6d20d0bfc5efa9766656e8c55e595d3baa..abab713141ebc36789558a33d13f86de6b032b58 100644
--- a/handlers/main.yml
+++ b/handlers/main.yml
@@ -1,10 +1,10 @@
 ---
 
-- name: start framadate docker
-  docker_compose:
-    project_src: /home/docker/
-    files: framadate.yaml
-    project_name: framadate
+- name: Start framadate docker
+  community.docker.docker_compose:
+      project_src: /home/docker/
+      files: framadate.yaml
+      project_name: framadate
   async: 120
   poll: 10
   when: not ansible_check_mode
diff --git a/meta/main.yml b/meta/main.yml
index edd69d2db865f6528c9596fca992d604415e9f72..1a169dbe4e79bc03dfba5370910395f6b9d04f6b 100644
--- a/meta/main.yml
+++ b/meta/main.yml
@@ -1,14 +1,14 @@
 ---
 galaxy_info:
-  author: Rémi
-  description: Role for deploying Framadate on Docker
-  company: Le Filament (https://le-filament.com)
-  license: AGPL-3.0-or-later
-  min_ansible_version: 2.1
-  platforms:
-    - name: Ubuntu
-      versions:
-        - bionic
-        - focal
-  galaxy_tags:
-    - framadate
+    author: lefilament
+    description: Role for deploying Framadate on Docker
+    company: Le Filament (https://le-filament.com)
+    license: AGPL-3.0-or-later
+    min_ansible_version: "2.1"
+    platforms:
+        - name: Ubuntu
+          versions:
+              - bionic
+              - focal
+    galaxy_tags:
+        - framadate
diff --git a/tasks/main.yml b/tasks/main.yml
index b81db76a5943fa91596bd903a02a91aef7ff8872..0ddb2a535ede1fe18b6ab89f2f1e9b50d2fbab7c 100644
--- a/tasks/main.yml
+++ b/tasks/main.yml
@@ -2,55 +2,55 @@
 
 ## Install Framadate docker
 - name: Install framadate docker
-  template:
-    src: framadate.yaml.j2
-    dest: /home/docker/framadate.yaml
-    owner: root
-    group: root
-    mode: '0400'
+  ansible.builtin.template:
+      src: framadate.yaml.j2
+      dest: /home/docker/framadate.yaml
+      owner: root
+      group: root
+      mode: '0400'
   notify:
-    - start framadate docker
+      - Start framadate docker
 
 ## Backup Framadate section
 - name: Install Framadate backup compose file
-  template:
-    src: backup.yaml.j2
-    dest: /home/docker/backups/backup-framadate.yaml
-    owner: root
-    group: root
-    mode: '0400'
+  ansible.builtin.template:
+      src: backup.yaml.j2
+      dest: /home/docker/backups/backup-framadate.yaml
+      owner: root
+      group: root
+      mode: '0400'
   when: inventory_hostname in groups['maintenance_contract']
 
 - name: Install Framadate backup2 compose file
-  template:
-    src: backup2.yaml.j2
-    dest: /home/docker/backups/backup2-framadate.yaml
-    owner: root
-    group: root
-    mode: '0400'
+  ansible.builtin.template:
+      src: backup2.yaml.j2
+      dest: /home/docker/backups/backup2-framadate.yaml
+      owner: root
+      group: root
+      mode: '0400'
   when: inventory_hostname in groups['maintenance_contract']
 
 - name: Get docker file for mysql duplicity from docker_nextcloud role
-  get_url:
-    url: "https://sources.le-filament.com/lefilament/ansible-roles/docker_nextcloud/-/raw/master/files/Dockerfile-backup"
-    dest: /home/docker/backups/Dockerfile-mysql
-    owner: root
-    group: root
-    mode: '0644'
+  ansible.builtin.get_url:
+      url: "https://sources.le-filament.com/lefilament/ansible-roles/docker_nextcloud/-/raw/master/files/Dockerfile-backup"
+      dest: /home/docker/backups/Dockerfile-mysql
+      owner: root
+      group: root
+      mode: '0644'
   when: inventory_hostname in groups['maintenance_contract']
 
-- name: add cron job to run backup every day
-  cron:
-    name: backup framadate
-    minute: "15"
-    hour: "04"
-    job: /usr/bin/docker-compose -f /home/docker/backups/backup-framadate.yaml run --rm backup_framadate
+- name: Add cron job to run backup every day
+  ansible.builtin.cron:
+      name: backup framadate
+      minute: "15"
+      hour: "04"
+      job: /usr/bin/docker-compose -f /home/docker/backups/backup-framadate.yaml run --rm backup_framadate
   when: inventory_hostname in groups['maintenance_contract']
 
-- name: add cron job to run backup2 every day
-  cron:
-    name: backup2 framadate
-    minute: "25"
-    hour: "01"
-    job: /usr/bin/docker-compose -f /home/docker/backups/backup2-framadate.yaml run --rm backup_framadate
+- name: Add cron job to run backup2 every day
+  ansible.builtin.cron:
+      name: backup2 framadate
+      minute: "25"
+      hour: "01"
+      job: /usr/bin/docker-compose -f /home/docker/backups/backup2-framadate.yaml run --rm backup_framadate
   when: inventory_hostname in groups['maintenance_contract']