diff --git a/roles/container-engine/containerd-common/defaults/main.yml b/roles/container-engine/containerd-common/defaults/main.yml
new file mode 100644
index 0000000000000000000000000000000000000000..d502f195d7eb91fea778fd612635ad118ed9dbee
--- /dev/null
+++ b/roles/container-engine/containerd-common/defaults/main.yml
@@ -0,0 +1,3 @@
+---
+containerd_version: '1.2.13'
+containerd_package: 'containerd.io'
diff --git a/roles/container-engine/containerd-common/tasks/main.yml b/roles/container-engine/containerd-common/tasks/main.yml
new file mode 100644
index 0000000000000000000000000000000000000000..59eee3270f2857834110ef938f8e715122123142
--- /dev/null
+++ b/roles/container-engine/containerd-common/tasks/main.yml
@@ -0,0 +1,19 @@
+---
+- name: gather os specific variables
+  include_vars: "{{ item }}"
+  with_first_found:
+    - files:
+        - "{{ ansible_distribution|lower }}-{{ ansible_distribution_version|lower|replace('/', '_') }}.yml"
+        - "{{ ansible_distribution|lower }}-{{ ansible_distribution_release|lower }}-{{ host_architecture }}.yml"
+        - "{{ ansible_distribution|lower }}-{{ ansible_distribution_release|lower }}.yml"
+        - "{{ ansible_distribution|lower }}-{{ ansible_distribution_major_version|lower|replace('/', '_') }}.yml"
+        - "{{ ansible_distribution|lower }}-{{ host_architecture }}.yml"
+        - "{{ ansible_distribution|lower }}.yml"
+        - "{{ ansible_os_family|lower }}-{{ host_architecture }}.yml"
+        - "{{ ansible_os_family|lower }}.yml"
+        - defaults.yml
+      paths:
+        - ../vars
+      skip: true
+  tags:
+    - facts
diff --git a/roles/container-engine/containerd-common/vars/debian.yml b/roles/container-engine/containerd-common/vars/debian.yml
new file mode 100644
index 0000000000000000000000000000000000000000..ff2caf5be5e3dafb32181ed1684e3a1af589268a
--- /dev/null
+++ b/roles/container-engine/containerd-common/vars/debian.yml
@@ -0,0 +1,11 @@
+---
+containerd_versioned_pkg:
+  'latest': "{{ containerd_package }}"
+  '1.2.4': "{{ containerd_package }}=1.2.4-1"
+  '1.2.5': "{{ containerd_package }}=1.2.5-1"
+  '1.2.6': "{{ containerd_package }}=1.2.6-3"
+  '1.2.10': "{{ containerd_package }}=1.2.10-3"
+  '1.2.12': "{{ containerd_package }}=1.2.12-1"
+  '1.2.13': "{{ containerd_package }}=1.2.13-2"
+  'stable': "{{ containerd_package }}=1.2.13-2"
+  'edge': "{{ containerd_package }}=1.2.13-2"
diff --git a/roles/container-engine/containerd-common/vars/fedora.yml b/roles/container-engine/containerd-common/vars/fedora.yml
new file mode 100644
index 0000000000000000000000000000000000000000..f68b8743ed723c971be0acb920487a2338fd4133
--- /dev/null
+++ b/roles/container-engine/containerd-common/vars/fedora.yml
@@ -0,0 +1,8 @@
+---
+containerd_versioned_pkg:
+  'latest': "{{ containerd_package }}"
+  '1.2.10': "{{ containerd_package }}-1.2.10-3.2.fc{{ ansible_distribution_major_version }}"
+  '1.2.12': "{{ containerd_package }}-1.2.12-3.1.fc{{ ansible_distribution_major_version }}"
+  '1.2.13': "{{ containerd_package }}-1.2.13-3.2.fc{{ ansible_distribution_major_version }}"
+  'stable': "{{ containerd_package }}-1.2.13-3.2.fc{{ ansible_distribution_major_version }}"
+  'edge': "{{ containerd_package }}-1.2.13-3.2.fc{{ ansible_distribution_major_version }}"
diff --git a/roles/container-engine/containerd-common/vars/redhat.yml b/roles/container-engine/containerd-common/vars/redhat.yml
new file mode 100644
index 0000000000000000000000000000000000000000..b77038e59edae39de7ae7304a3909a76da2fc4e3
--- /dev/null
+++ b/roles/container-engine/containerd-common/vars/redhat.yml
@@ -0,0 +1,11 @@
+---
+containerd_versioned_pkg:
+  'latest': "{{ containerd_package }}"
+  '1.2.4': "{{ containerd_package }}-1.2.4-3.1.el7"
+  '1.2.5': "{{ containerd_package }}-1.2.5-3.1.el7"
+  '1.2.6': "{{ containerd_package }}-1.2.6-3.3.el7"
+  '1.2.10': "{{ containerd_package }}-1.2.10-3.2.el7"
+  '1.2.12': "{{ containerd_package }}-1.2.12-3.1.el7"
+  '1.2.13': "{{ containerd_package }}-1.2.13-3.2.el7"
+  'stable': "{{ containerd_package }}-1.2.13-3.2.el7"
+  'edge': "{{ containerd_package }}-1.2.13-3.2.el7"
diff --git a/roles/container-engine/containerd-common/vars/ubuntu-amd64.yml b/roles/container-engine/containerd-common/vars/ubuntu-amd64.yml
new file mode 100644
index 0000000000000000000000000000000000000000..ff2caf5be5e3dafb32181ed1684e3a1af589268a
--- /dev/null
+++ b/roles/container-engine/containerd-common/vars/ubuntu-amd64.yml
@@ -0,0 +1,11 @@
+---
+containerd_versioned_pkg:
+  'latest': "{{ containerd_package }}"
+  '1.2.4': "{{ containerd_package }}=1.2.4-1"
+  '1.2.5': "{{ containerd_package }}=1.2.5-1"
+  '1.2.6': "{{ containerd_package }}=1.2.6-3"
+  '1.2.10': "{{ containerd_package }}=1.2.10-3"
+  '1.2.12': "{{ containerd_package }}=1.2.12-1"
+  '1.2.13': "{{ containerd_package }}=1.2.13-2"
+  'stable': "{{ containerd_package }}=1.2.13-2"
+  'edge': "{{ containerd_package }}=1.2.13-2"
diff --git a/roles/container-engine/containerd-common/vars/ubuntu-arm64.yml b/roles/container-engine/containerd-common/vars/ubuntu-arm64.yml
new file mode 100644
index 0000000000000000000000000000000000000000..08ec3dd68f170685d64e4a1eeafb9f45cf5ab7bd
--- /dev/null
+++ b/roles/container-engine/containerd-common/vars/ubuntu-arm64.yml
@@ -0,0 +1,8 @@
+---
+containerd_versioned_pkg:
+  'latest': "{{ containerd_package }}"
+  '1.2.10': "{{ containerd_package }}=1.2.10-3"
+  '1.2.12': "{{ containerd_package }}=1.2.12-1"
+  '1.2.13': "{{ containerd_package }}=1.2.13-2"
+  'stable': "{{ containerd_package }}=1.2.13-2"
+  'edge': "{{ containerd_package }}=1.2.13-2"
diff --git a/roles/container-engine/containerd/defaults/main.yml b/roles/container-engine/containerd/defaults/main.yml
index bf6484081d6ba11372b76aab4433cd4fc6451a88..ee833bb1952acb347d05c0ea6a366f8324e3b900 100644
--- a/roles/container-engine/containerd/defaults/main.yml
+++ b/roles/container-engine/containerd/defaults/main.yml
@@ -11,9 +11,6 @@ containerd_config:
   # containerd:
   #   snapshotter: native
 
-containerd_version: '1.2.13'
-containerd_package: 'containerd.io'
-
 containerd_cfg_dir: /etc/containerd
 
 # Path to runc binary
diff --git a/roles/container-engine/containerd/meta/main.yml b/roles/container-engine/containerd/meta/main.yml
new file mode 100644
index 0000000000000000000000000000000000000000..1a53ba7d6ec3aadb7dc27f42a2d6bf5bd22a1998
--- /dev/null
+++ b/roles/container-engine/containerd/meta/main.yml
@@ -0,0 +1,3 @@
+---
+dependencies:
+  - role: container-engine/containerd-common
diff --git a/roles/container-engine/containerd/tasks/crictl.yml b/roles/container-engine/containerd/tasks/crictl.yml
index 0e0459508c1484ded29b83ec125f76c3a043a3f3..eaa94efa3f726c945fd5c3cb19e8ea7ab0b3edf0 100644
--- a/roles/container-engine/containerd/tasks/crictl.yml
+++ b/roles/container-engine/containerd/tasks/crictl.yml
@@ -22,12 +22,13 @@
   delegate_to: "{{ inventory_hostname }}"
 
 - name: Get crictl completion
-  shell: "{{ bin_dir }}/crictl completion"
+  command: "{{ bin_dir }}/crictl completion"
   changed_when: False
   register: cri_completion
+  check_mode: False
 
 - name: Install crictl completion
   copy:
     dest: /etc/bash_completion.d/crictl
     content: "{{ cri_completion.stdout }}"
-  become: True
\ No newline at end of file
+  become: True
diff --git a/roles/container-engine/containerd/vars/debian.yml b/roles/container-engine/containerd/vars/debian.yml
index 6365a938bce3bc9c2fe4fd61f7e7538e077576d3..66aa5f08c4664bbc565e5c1d6e86f513bfa2b49c 100644
--- a/roles/container-engine/containerd/vars/debian.yml
+++ b/roles/container-engine/containerd/vars/debian.yml
@@ -1,16 +1,4 @@
 ---
-
-containerd_versioned_pkg:
-  'latest': "{{ containerd_package }}"
-  '1.2.4': "{{ containerd_package }}=1.2.4-1"
-  '1.2.5': "{{ containerd_package }}=1.2.5-1"
-  '1.2.6': "{{ containerd_package }}=1.2.6-3"
-  '1.2.10': "{{ containerd_package }}=1.2.10-3"
-  '1.2.12': "{{ containerd_package }}=1.2.12-1"
-  '1.2.13': "{{ containerd_package }}=1.2.13-2"
-  'stable': "{{ containerd_package }}=1.2.13-2"
-  'edge': "{{ containerd_package }}=1.2.13-2"
-
 containerd_package_info:
   pkg_mgr: apt
   pkgs:
diff --git a/roles/container-engine/containerd/vars/fedora.yml b/roles/container-engine/containerd/vars/fedora.yml
index ca06bef6bdbd426697e265e154fce6f5231c8451..dbbbee722b16db0a074d0c43c620d05b3b9890da 100644
--- a/roles/container-engine/containerd/vars/fedora.yml
+++ b/roles/container-engine/containerd/vars/fedora.yml
@@ -1,13 +1,4 @@
 ---
-
-containerd_versioned_pkg:
-  'latest': "{{ containerd_package }}"
-  '1.2.10': "{{ containerd_package }}-1.2.10-3.2.fc{{ ansible_distribution_major_version }}"
-  '1.2.12': "{{ containerd_package }}-1.2.12-3.2.fc{{ ansible_distribution_major_version }}"
-  '1.2.13': "{{ containerd_package }}-1.2.13-3.2.fc{{ ansible_distribution_major_version }}"
-  'stable': "{{ containerd_package }}-1.2.13-3.2.fc{{ ansible_distribution_major_version }}"
-  'edge': "{{ containerd_package }}-1.2.13-3.2.fc{{ ansible_distribution_major_version }}"
-
 containerd_package_info:
   pkg_mgr: dnf
   pkgs:
diff --git a/roles/container-engine/containerd/vars/redhat.yml b/roles/container-engine/containerd/vars/redhat.yml
index 58bdfae02468eb2397447c1c4fe1507a4e003a6f..d375d1493b03dc4dab889363f691a06a1dd55476 100644
--- a/roles/container-engine/containerd/vars/redhat.yml
+++ b/roles/container-engine/containerd/vars/redhat.yml
@@ -1,16 +1,4 @@
 ---
-
-containerd_versioned_pkg:
-  'latest': "{{ containerd_package }}"
-  '1.2.4': "{{ containerd_package }}-1.2.4-3.1.el7"
-  '1.2.5': "{{ containerd_package }}-1.2.5-3.1.el7"
-  '1.2.6': "{{ containerd_package }}-1.2.6-3.3.el7"
-  '1.2.10': "{{ containerd_package }}-1.2.10-3.2.el7"
-  '1.2.12': "{{ containerd_package }}-1.2.12-3.1.el7"
-  '1.2.13': "{{ containerd_package }}-1.2.13-3.2.el7"
-  'stable': "{{ containerd_package }}-1.2.13-3.2.el7"
-  'edge': "{{ containerd_package }}-1.2.13-3.2.el7"
-
 containerd_package_info:
   pkg_mgr: yum
   pkgs:
diff --git a/roles/container-engine/containerd/vars/ubuntu-amd64.yml b/roles/container-engine/containerd/vars/ubuntu-amd64.yml
index d0d495d0ba377b730f1ea1c2fa15457ea4878cf3..a57cf5030cf385bbc5cfe3fc26897bc46df08892 100644
--- a/roles/container-engine/containerd/vars/ubuntu-amd64.yml
+++ b/roles/container-engine/containerd/vars/ubuntu-amd64.yml
@@ -1,16 +1,4 @@
 ---
-
-containerd_versioned_pkg:
-  'latest': "{{ containerd_package }}"
-  '1.2.4': "{{ containerd_package }}=1.2.4-1"
-  '1.2.5': "{{ containerd_package }}=1.2.5-1"
-  '1.2.6': "{{ containerd_package }}=1.2.6-3"
-  '1.2.10': "{{ containerd_package }}=1.2.10-3"
-  '1.2.12': "{{ containerd_package }}=1.2.12-1"
-  '1.2.13': "{{ containerd_package }}=1.2.13-2"
-  'stable': "{{ containerd_package }}=1.2.13-2"
-  'edge': "{{ containerd_package }}=1.2.13-2"
-
 containerd_package_info:
   pkg_mgr: apt
   pkgs:
diff --git a/roles/container-engine/docker/meta/main.yml b/roles/container-engine/docker/meta/main.yml
index 55974071c3f17ae8525a0d908784d0084eb283ea..d7e47517ad86a4da0d24a1f8eb6000278640cfb9 100644
--- a/roles/container-engine/docker/meta/main.yml
+++ b/roles/container-engine/docker/meta/main.yml
@@ -1,4 +1,5 @@
 ---
 dependencies:
+  - role: container-engine/containerd-common
   - role: container-engine/docker-storage
     when: docker_container_storage_setup and ansible_os_family == "RedHat"
diff --git a/roles/container-engine/docker/tasks/main.yml b/roles/container-engine/docker/tasks/main.yml
index bd6ac06e027b228a1ba5ee322a7e01656355a893..9369186bb7a254c0b2495c62c8ad6e22fac8903b 100644
--- a/roles/container-engine/docker/tasks/main.yml
+++ b/roles/container-engine/docker/tasks/main.yml
@@ -196,6 +196,7 @@
     - docker_task_result is failed
     - ansible_distribution == 'Ubuntu'
   register: available_packages
+  check_mode: false
 
 - name: show available packages on ubuntu
   fail:
@@ -239,6 +240,7 @@
   command: "docker version -f '{{ '{{' }}.Client.Version{{ '}}' }}'"
   register: installed_docker_version
   changed_when: false
+  check_mode: false
 
 - name: check minimum docker version for docker_dns mode. You need at least docker version >= 1.12 for resolvconf_mode=docker_dns
   fail:
diff --git a/roles/container-engine/docker/tasks/systemd.yml b/roles/container-engine/docker/tasks/systemd.yml
index a2e1d9d7097a9e499dbe343ae7f8970818aa6e84..0a232ea9eed01b1f4ae359a10b1df5635a746bb6 100644
--- a/roles/container-engine/docker/tasks/systemd.yml
+++ b/roles/container-engine/docker/tasks/systemd.yml
@@ -17,6 +17,7 @@
   register: systemd_version
   when: not is_ostree
   changed_when: false
+  check_mode: false
 
 - name: Write docker.service systemd file
   template:
diff --git a/roles/container-engine/docker/vars/debian.yml b/roles/container-engine/docker/vars/debian.yml
index d0677bf6897ed31b0cab1169bfef3cac03cd8d61..55dbec5db044c5d03cab8871dba47c885d2c2512 100644
--- a/roles/container-engine/docker/vars/debian.yml
+++ b/roles/container-engine/docker/vars/debian.yml
@@ -24,6 +24,8 @@ docker_cli_versioned_pkg:
 docker_package_info:
   pkg_mgr: apt
   pkgs:
+    - name: "{{ containerd_versioned_pkg[containerd_version | string] }}"
+      force: yes
     - name: "{{ docker_cli_versioned_pkg[docker_cli_version | string] }}"
       force: yes
     - name: "{{ docker_versioned_pkg[docker_version | string] }}"
diff --git a/roles/container-engine/docker/vars/fedora.yml b/roles/container-engine/docker/vars/fedora.yml
index 6501d778ba92e256510bf1613805565eb3fccef6..44b38bb55f04c145f619e64a2dce6b310c9a96f1 100644
--- a/roles/container-engine/docker/vars/fedora.yml
+++ b/roles/container-engine/docker/vars/fedora.yml
@@ -21,5 +21,6 @@ docker_cli_versioned_pkg:
 docker_package_info:
   pkg_mgr: dnf
   pkgs:
+    - name: "{{ containerd_versioned_pkg[containerd_version | string] }}"
     - name: "{{ docker_cli_versioned_pkg[docker_cli_version | string] }}"
     - name: "{{ docker_versioned_pkg[docker_version | string] }}"
diff --git a/roles/container-engine/docker/vars/redhat.yml b/roles/container-engine/docker/vars/redhat.yml
index a30ab00f639e78a7ff3d18abb76f5f6f1e33be0f..b3008db3dd3e58070a1f7108a23712d95b436e0f 100644
--- a/roles/container-engine/docker/vars/redhat.yml
+++ b/roles/container-engine/docker/vars/redhat.yml
@@ -35,6 +35,8 @@ docker_pkgs_use_docker_ce:
     yum_conf: "{{ docker_yum_conf }}"
 
 docker_pkgs:
+  - name: "{{ containerd_versioned_pkg[containerd_version | string] }}"
+    yum_conf: "{{ docker_yum_conf }}"
   - name: "{{ docker_cli_versioned_pkg[docker_cli_version | string] }}"
     yum_conf: "{{ docker_yum_conf }}"
   - name: "{{ docker_versioned_pkg[docker_version | string] }}"
diff --git a/roles/container-engine/docker/vars/ubuntu-amd64.yml b/roles/container-engine/docker/vars/ubuntu-amd64.yml
index 7f3030032e9bf583329ac331b7202b7966047e48..329400596f737315fb0fae5bbd05f6411646db07 100644
--- a/roles/container-engine/docker/vars/ubuntu-amd64.yml
+++ b/roles/container-engine/docker/vars/ubuntu-amd64.yml
@@ -24,6 +24,8 @@ docker_cli_versioned_pkg:
 docker_package_info:
   pkg_mgr: apt
   pkgs:
+    - name: "{{ containerd_versioned_pkg[containerd_version | string] }}"
+      force: yes
     - name: "{{ docker_cli_versioned_pkg[docker_cli_version | string] }}"
       force: yes
     - name: "{{ docker_versioned_pkg[docker_version | string] }}"
diff --git a/roles/container-engine/docker/vars/ubuntu-arm64.yml b/roles/container-engine/docker/vars/ubuntu-arm64.yml
index 69baada1cd85111865c4d5af5f6e95cdabdd2f12..3d4de5f9f822d0c965bc610b7f14f708d6f2cd05 100644
--- a/roles/container-engine/docker/vars/ubuntu-arm64.yml
+++ b/roles/container-engine/docker/vars/ubuntu-arm64.yml
@@ -20,6 +20,8 @@ docker_cli_versioned_pkg:
 docker_package_info:
   pkg_mgr: apt
   pkgs:
+    - name: "{{ containerd_versioned_pkg[containerd_version | string] }}"
+      force: yes
     - name: "{{ docker_cli_versioned_pkg[docker_cli_version | string] }}"
       force: yes
     - name: "{{ docker_versioned_pkg[docker_version | string] }}"