diff --git a/roles/container-engine/containerd/tasks/crictl.yml b/roles/container-engine/containerd/tasks/crictl.yml
deleted file mode 100644
index 3a9c074e6c2ea52d17405f569e6ed76552068253..0000000000000000000000000000000000000000
--- a/roles/container-engine/containerd/tasks/crictl.yml
+++ /dev/null
@@ -1,31 +0,0 @@
----
-- name: crictl | Download crictl
-  include_tasks: "../../../download/tasks/download_file.yml"
-  vars:
-    download: "{{ download_defaults | combine(downloads.crictl) }}"
-
-- name: Install crictl config
-  template:
-    src: ../templates/crictl.yaml.j2  # noqa 404 not in role_path when task is included from download role
-    dest: /etc/crictl.yaml
-    owner: bin
-    mode: 0644
-
-- name: Copy crictl binary from download dir
-  copy:
-    src: "{{ local_release_dir }}/crictl"
-    dest: "{{ bin_dir }}/crictl"
-    mode: 0755
-    remote_src: true
-
-- name: Get 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
diff --git a/roles/container-engine/containerd/tasks/main.yml b/roles/container-engine/containerd/tasks/main.yml
index c2369daadd02ab42d67e99a4a1bde9d1fd150032..9524e109751383b132db08ba19672d21ef7441b2 100644
--- a/roles/container-engine/containerd/tasks/main.yml
+++ b/roles/container-engine/containerd/tasks/main.yml
@@ -138,4 +138,5 @@
     - ansible_distribution_major_version == "8"
   notify: restart containerd
 
-- include_tasks: crictl.yml
+- include_role:
+    name: container-engine/crictl
diff --git a/roles/container-engine/cri-o/tasks/main.yaml b/roles/container-engine/cri-o/tasks/main.yaml
index 83165f2a7477d1a017828e0dbdc992084da4598a..09425f6705ecf135d8100eaf74b5d81914289b33 100644
--- a/roles/container-engine/cri-o/tasks/main.yaml
+++ b/roles/container-engine/cri-o/tasks/main.yaml
@@ -43,7 +43,8 @@
   import_tasks: "crio_repo.yml"
   when: crio_add_repos
 
-- import_tasks: "crictl.yml"
+- include_role:
+    name: container-engine/crictl
 
 - name: Build a list of crio runtimes with Katacontainers runtimes
   set_fact:
diff --git a/roles/container-engine/crictl/handlers/main.yml b/roles/container-engine/crictl/handlers/main.yml
new file mode 100644
index 0000000000000000000000000000000000000000..53195869fed77facd06bc190205efd1115dc0801
--- /dev/null
+++ b/roles/container-engine/crictl/handlers/main.yml
@@ -0,0 +1,12 @@
+---
+- name: Get 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 }}"
+    mode: 0644
diff --git a/roles/container-engine/cri-o/tasks/crictl.yml b/roles/container-engine/crictl/tasks/crictl.yml
similarity index 54%
rename from roles/container-engine/cri-o/tasks/crictl.yml
rename to roles/container-engine/crictl/tasks/crictl.yml
index d7cc1e66535f46c12d4171bf4dfecef33cc2e791..b98875e5d6e2a77b408504579c1d73fa85b8d7e6 100644
--- a/roles/container-engine/cri-o/tasks/crictl.yml
+++ b/roles/container-engine/crictl/tasks/crictl.yml
@@ -6,7 +6,7 @@
 
 - name: Install crictl config
   template:
-    src: ../templates/crictl.yaml.j2  # noqa 404 not in role_path when task is included from download role
+    src: crictl.yaml.j2
     dest: /etc/crictl.yaml
     owner: bin
     mode: 0644
@@ -17,14 +17,10 @@
     dest: "{{ bin_dir }}/crictl"
     mode: 0755
     remote_src: true
+  notify:
+    - Get crictl completion
+    - Install crictl completion
 
-- name: Get crictl completion
-  command: "{{ bin_dir }}/crictl completion"
-  changed_when: False
-  register: cri_completion
-
-- name: Install crictl completion
-  copy:
-    dest: /etc/bash_completion.d/crictl
-    content: "{{ cri_completion.stdout }}"
-  become: True
+- name: Set fact crictl_installed
+  set_fact:
+    crictl_installed: true
diff --git a/roles/container-engine/crictl/tasks/main.yml b/roles/container-engine/crictl/tasks/main.yml
new file mode 100644
index 0000000000000000000000000000000000000000..30f1004c285d9f9c4c559421bf44b522e7fa74ad
--- /dev/null
+++ b/roles/container-engine/crictl/tasks/main.yml
@@ -0,0 +1,4 @@
+---
+- name: install crictĺ
+  include_tasks: crictl.yml
+  when: not crictl_installed | default(false)
diff --git a/roles/container-engine/containerd/templates/crictl.yaml.j2 b/roles/container-engine/crictl/templates/crictl.yaml.j2
similarity index 100%
rename from roles/container-engine/containerd/templates/crictl.yaml.j2
rename to roles/container-engine/crictl/templates/crictl.yaml.j2
diff --git a/roles/download/tasks/main.yml b/roles/download/tasks/main.yml
index 8f811b02e5a9bc820cbdb20d001b5dd4a4cc6d41..b5b3ef08cb091640f521bff225957bb0b29e8134 100644
--- a/roles/download/tasks/main.yml
+++ b/roles/download/tasks/main.yml
@@ -7,10 +7,10 @@
     - download
     - upload
 
-- include_tasks: ../../container-engine/containerd/tasks/crictl.yml
-  when:
-    - not skip_downloads|default(false)
-    - container_manager in ['containerd', 'crio']
+- name: install crictl
+  import_role:
+    name: container-engine/crictl
+  when: not skip_downloads|default(false)
 
 - name: download | Get kubeadm binary and list of required images
   include_tasks: prep_kubeadm_images.yml