diff --git a/roles/kubespray-defaults/tasks/fallback_ips.yml b/roles/kubespray-defaults/tasks/fallback_ips.yml
index ad8523db89b4dd509484170077acb321f97196b6..291bd3fccfe7e4a7edc6457f7718d6ee982d79d3 100644
--- a/roles/kubespray-defaults/tasks/fallback_ips.yml
+++ b/roles/kubespray-defaults/tasks/fallback_ips.yml
@@ -7,7 +7,7 @@
   tags: always
   include_tasks: fallback_ips_gather.yml
   when: hostvars[delegate_host_to_gather_facts].ansible_default_ipv4 is not defined
-  loop: "{{ groups['all'] }}"
+  loop: "{{ groups['k8s-cluster']|default([]) + groups['etcd']|default([]) + groups['calico-rr']|default([]) }}"
   loop_control:
     loop_var: delegate_host_to_gather_facts
   run_once: yes