diff --git a/README.md b/README.md
index 4c5be0d6846f132a8207f2b748dfe779a8a3bdef..9942297bf4abf98f7b84de4b41088561c5d37048 100644
--- a/README.md
+++ b/README.md
@@ -1,7 +1,7 @@
 ansible-yunohost
 =========
 
-Deploy Yunohost with Ansible !
+Deploy Yunohost with Ansible!
 
 Requirements
 ------------
@@ -54,7 +54,7 @@ Example Playbook
   remote_user: root
   pre_tasks:
     - name: Update all packages and index
-      apt:
+      ansible.builtin.apt:
         upgrade: dist
         update_cache: yes
 
diff --git a/meta/main.yml b/meta/main.yml
index 3d2bc9908aaf7de28fddc906d2f23ee38775634b..70805951ea6a5025fa1536cdd54807a25dc90656 100644
--- a/meta/main.yml
+++ b/meta/main.yml
@@ -1,13 +1,15 @@
 galaxy_info:
+  role_name: yunohost
   author: sylvainar
   description: Deploy Yunohost with Ansible
   license: GPL-v3
-  min_ansible_version: 1.2
+  min_ansible_version: 2.10
   galaxy_tags: [yunohost]
   platforms:
   - name: Debian
     versions:
       - jessie
+      - buster
   categories:
     - cloud
     - web
diff --git a/tasks/apps.yml b/tasks/apps.yml
index 45a1f8bb8242540ef4e24ed4b19ef651416d754b..37776b1bc9b910898209f9ae8e87c2537e609173 100644
--- a/tasks/apps.yml
+++ b/tasks/apps.yml
@@ -1,13 +1,13 @@
 ---
 - name: List currently installed apps
-  shell: yunohost app map --output-as json
+  ansible.builtin.shell: yunohost app map --output-as json
   register: yunohost_installed_apps_raw
   changed_when: False
 
 - name: Format json of apps
-  set_fact: yunohost_installed_apps="{{ yunohost_installed_apps_raw.stdout | from_json }}"
+  ansible.builtin.set_fact: yunohost_installed_apps="{{ yunohost_installed_apps_raw.stdout | from_json }}"
 
 - name: Install apps
-  shell: yunohost app install {{ item.link }} --label "{{ item.label }}" --args "{% for key, value in item.args.items() %}{{key}}={{value}}{% if not loop.last %}&{% endif %}{% endfor %}"
+  ansible.builtin.shell: yunohost app install {{ item.link }} --label "{{ item.label }}" --args "{% for key, value in item.args.items() %}{{key}}={{value}}{% if not loop.last %}&{% endif %}{% endfor %}"
   with_items: "{{ yunohost.apps }}"
   when: item.label not in yunohost_installed_apps.values()
diff --git a/tasks/domains.yml b/tasks/domains.yml
index f2d26bb0b28bda9b8b7a2f26f8353dabac19bfe7..c6c1424195507f9762d9fb7cca91e981512c4faf 100644
--- a/tasks/domains.yml
+++ b/tasks/domains.yml
@@ -1,13 +1,13 @@
 ---
 - name: List currently installed domains
-  shell: yunohost domain list --output-as json
+  ansible.builtin.shell: yunohost domain list --output-as json
   register: yunohost_installed_domains_raw
   changed_when: False
 
 - name: Format json of domains
-  set_fact: yunohost_installed_domains="{{ yunohost_installed_domains_raw.stdout | from_json }}"
+  ansible.builtin.set_fact: yunohost_installed_domains="{{ yunohost_installed_domains_raw.stdout | from_json }}"
 
 - name: Create domains
-  shell: yunohost domain add {{ item }}
+  ansible.builtin.shell: yunohost domain add {{ item }}
   with_items: "{{ yunohost.extra_domains }}"
   when: item not in yunohost_installed_domains.domains
diff --git a/tasks/main.yml b/tasks/main.yml
index e5af5d06a002a46b4618d486cd17f413129469c1..b01d51bdcd798541a4d633bf6c597f091aefdce6 100644
--- a/tasks/main.yml
+++ b/tasks/main.yml
@@ -1,28 +1,28 @@
 ---
 - name: Install requirements
-  apt:
+  ansible.builtin.apt:
     name:
       - git
       - dialog
     state: present
 
 - name: Test if Yunohost is already installed
-  stat: path=/etc/yunohost/installed
+  ansible.builtin.stat: path=/etc/yunohost/installed
   register: yunohost_file_install
 
 - name: Download install script
-  get_url:
+  ansible.builtin.get_url:
     url: "{{ yunohost.install_script_url }}"
     dest: /tmp/install_yunohost.sh
     mode: 700
   when: yunohost_file_install.stat.exists == False
 
 - name: Launch script
-  command: /tmp/install_yunohost.sh -a
+  ansible.builtin.command: /tmp/install_yunohost.sh -a
   when: yunohost_file_install.stat.exists == False
 
 - name: Launch postinsstall
-  shell: "
+  ansible.builtin.shell: "
     yunohost tools postinstall \
       --domain {{ yunohost.domain }} \
       --password {{ yunohost.password }} \
@@ -31,20 +31,20 @@
   when: yunohost_file_install.stat.exists == False
 
 - name: Create domains
-  include: domains.yml
+  ansible.builtin.include: domains.yml
   when: yunohost.extra_domains
 
 - name: Run diagnosis # Required to install certificates
-  shell: yunohost diagnosis run
+  ansible.builtin.shell: yunohost diagnosis run
 
 - name: Install certificates
-  shell: yunohost domain cert-install
+  ansible.builtin.shell: yunohost domain cert-install
   changed_when: False
 
 - name: Add users
-  include: users.yml
+  ansible.builtin.include: users.yml
   when: yunohost.users
 
 - name: Install apps
-  include: apps.yml
+  ansible.builtin.include: apps.yml
   when: yunohost.apps
diff --git a/tasks/users.yml b/tasks/users.yml
index 6310a6dc5175da79481ccf229e45631c3b57ee2a..910006caea7095b9ab8a075b509796f8be32fefa 100644
--- a/tasks/users.yml
+++ b/tasks/users.yml
@@ -1,18 +1,18 @@
 ---
 - name: List users
-  shell: yunohost user list --output-as json
+  ansible.builtin.shell: yunohost user list --output-as json
   register: yunohost_registered_users_raw
   changed_when: False
 
 - name: Format json of users
-  set_fact: yunohost_registered_users="{{ yunohost_registered_users_raw.stdout | from_json }}"
+  ansible.builtin.set_fact: yunohost_registered_users="{{ yunohost_registered_users_raw.stdout | from_json }}"
 
 - name: Create missing users
-  shell: |
+  ansible.builtin.shell: |
     yunohost user create {{ item.name }} \
     -f {{ item.firstname }} \
     -l {{ item.lastname }} \
     -m {{ item.mail }} \
     -p {{ item.pass }}
-  with_items: "{{ yunohost.users }}"
+  loop: "{{ yunohost.users }}"
   when: item.name not in yunohost_registered_users.users.keys()