From 1781eab21f09d616fa8db041c27e2f2229be94e4 Mon Sep 17 00:00:00 2001
From: cyril-corbon <corboncyril@gmail.com>
Date: Fri, 1 Apr 2022 18:20:46 +0200
Subject: [PATCH] fix: uninstall contailer engine if service is running (#8662)

---
 .../validate-container-engine/tasks/main.yml  | 32 +++++++++++--------
 1 file changed, 19 insertions(+), 13 deletions(-)

diff --git a/roles/container-engine/validate-container-engine/tasks/main.yml b/roles/container-engine/validate-container-engine/tasks/main.yml
index 22596e17c..175aa016e 100644
--- a/roles/container-engine/validate-container-engine/tasks/main.yml
+++ b/roles/container-engine/validate-container-engine/tasks/main.yml
@@ -16,6 +16,9 @@
     path: "/etc/systemd/system/kubelet.service"
   register: kubelet_systemd_unit_exists
 
+- name: Populate service facts
+  service_facts:
+
 - name: Check if containerd is installed
   find:
     file_type: file
@@ -72,16 +75,17 @@
       when:
         - kubelet_systemd_unit_exists
     - name: Remove Containerd
-      include_role:
+      import_role:
         name: container-engine/containerd
-        apply:
-          tags:
-            - reset_containerd
+        tasks_from: reset
+  vars:
+    service_name: containerd.service
   when:
     - not (is_ostree or (ansible_distribution == "Flatcar Container Linux by Kinvolk") or (ansible_distribution == "Flatcar"))
     - container_manager != "containerd"
     - docker_installed.matched == 0
     - containerd_installed.matched > 0
+    - ansible_facts.services[service_name]['state'] == 'running'
 
 - name: Uninstall docker
   block:
@@ -100,15 +104,16 @@
       when:
         - kubelet_systemd_unit_exists
     - name: Remove Docker
-      include_role:
+      import_role:
         name: container-engine/docker
-        apply:
-          tags:
-            - reset_docker
+        tasks_from: reset
+  vars:
+    service_name: docker.service
   when:
     - not (is_ostree or (ansible_distribution == "Flatcar Container Linux by Kinvolk") or (ansible_distribution == "Flatcar"))
     - container_manager != "docker"
     - docker_installed.matched > 0
+    - ansible_facts.services[service_name]['state'] == 'running'
 
 - name: Uninstall crio
   block:
@@ -127,12 +132,13 @@
       when:
         - kubelet_systemd_unit_exists
     - name: Remove CRI-O
-      include_role:
-        name: container-engine/crio
-        apply:
-          tags:
-            - reset_crio
+      import_role:
+        name: container-engine/cri-o
+        tasks_from: reset
+  vars:
+    service_name: crio.service
   when:
     - not (is_ostree or (ansible_distribution == "Flatcar Container Linux by Kinvolk") or (ansible_distribution == "Flatcar"))
     - container_manager != "crio"
     - crio_installed.matched > 0
+    - ansible_facts.services[service_name]['state'] == 'running'
-- 
GitLab