diff --git a/cluster.yml b/cluster.yml
index a7b360c1708a47c794a91dc56998794131e4f830..35c6fdbeabb52cf2e7acafea84b3a70c0ed17fee 100644
--- a/cluster.yml
+++ b/cluster.yml
@@ -32,7 +32,7 @@
   roles:
     - { role: kubespray-defaults }
     - { role: kubernetes/preinstall, tags: preinstall }
-    - { role: "container-engine", tags: "container-engine", when: deploy_container_engine|default(true) }
+    - { role: "container-engine", tags: "container-engine", when: deploy_container_engine }
     - { role: download, tags: download, when: "not skip_downloads" }
 
 - hosts: etcd
diff --git a/roles/kubespray-defaults/defaults/main.yaml b/roles/kubespray-defaults/defaults/main.yaml
index bf73304418cd4b2165f0ec7e51b28c7011a9fae4..0da30058cd7c670ad1c1c245e94777a797393204 100644
--- a/roles/kubespray-defaults/defaults/main.yaml
+++ b/roles/kubespray-defaults/defaults/main.yaml
@@ -244,6 +244,9 @@ kubelet_shutdown_grace_period: 60s
 # to give normal pods time to be gracefully evacuated
 kubelet_shutdown_grace_period_critical_pods: 20s
 
+# Whether to deploy the container engine
+deploy_container_engine: inventory_hostname in groups['k8s_cluster'] or etcd_deployment_type != 'host'
+
 # Container for runtime
 container_manager: docker
 
diff --git a/roles/reset/tasks/main.yml b/roles/reset/tasks/main.yml
index 5a20e5331315e11c6033113b1fbfcf6868f452cf..11f6a8165d9f52461eee12ca2311957c6c2a1b22 100644
--- a/roles/reset/tasks/main.yml
+++ b/roles/reset/tasks/main.yml
@@ -100,7 +100,7 @@
   when:
     - crictl.stat.exists
     - container_manager in ["crio", "containerd"]
-    - deploy_container_engine|default(true)
+    - deploy_container_engine
 
 - name: reset | stop and disable crio service
   service:
diff --git a/scale.yml b/scale.yml
index 33b9eeb0cf9daf199520cd933f2a2a0ade187ed1..df8a4798e5b2630159be2724a7bad76eb8816497 100644
--- a/scale.yml
+++ b/scale.yml
@@ -53,7 +53,7 @@
   roles:
     - { role: kubespray-defaults }
     - { role: kubernetes/preinstall, tags: preinstall }
-    - { role: container-engine, tags: "container-engine", when: deploy_container_engine|default(true) }
+    - { role: container-engine, tags: "container-engine", when: deploy_container_engine }
     - { role: download, tags: download, when: "not skip_downloads" }
     - { role: etcd, tags: etcd, etcd_cluster_setup: false, when: "not etcd_kubeadm_enabled|default(false)" }
 
diff --git a/upgrade-cluster.yml b/upgrade-cluster.yml
index 5b6d7b207882d87f37db5207d6be35e6b5eacfa7..08cd9ca6d0061c1b1862edbb8adecec51a606a38 100644
--- a/upgrade-cluster.yml
+++ b/upgrade-cluster.yml
@@ -57,7 +57,7 @@
   serial: "{{ serial | default('20%') }}"
   roles:
     - { role: kubespray-defaults }
-    - { role: container-engine, tags: "container-engine", when: deploy_container_engine|default(true) }
+    - { role: container-engine, tags: "container-engine", when: deploy_container_engine }
 
 - hosts: etcd
   gather_facts: False
@@ -94,7 +94,7 @@
   roles:
     - { role: kubespray-defaults }
     - { role: upgrade/pre-upgrade, tags: pre-upgrade }
-    - { role: container-engine, tags: "container-engine", when: deploy_container_engine|default(true) }
+    - { role: container-engine, tags: "container-engine", when: deploy_container_engine }
     - { role: kubernetes/node, tags: node }
     - { role: kubernetes/control-plane, tags: master, upgrade_cluster_setup: true }
     - { role: kubernetes/client, tags: client }
@@ -125,7 +125,7 @@
   roles:
     - { role: kubespray-defaults }
     - { role: upgrade/pre-upgrade, tags: pre-upgrade }
-    - { role: container-engine, tags: "container-engine", when: deploy_container_engine|default(true) }
+    - { role: container-engine, tags: "container-engine", when: deploy_container_engine }
     - { role: kubernetes/node, tags: node }
     - { role: kubernetes/kubeadm, tags: kubeadm }
     - { role: kubernetes/node-label, tags: node-label }