diff --git a/docs/operating_systems/bootstrap-os.md b/docs/operating_systems/bootstrap-os.md
index c2a75c06e48addaacffa96b5f1b2eccfe71d5b4f..5c779ff4b2f4ca7b3d2cac482f9cd55f5b79ead4 100644
--- a/docs/operating_systems/bootstrap-os.md
+++ b/docs/operating_systems/bootstrap-os.md
@@ -40,10 +40,6 @@ Variables are listed with their default values, if applicable.
 * `centos_fastestmirror_enabled: false`
   Whether the [fastestmirror](https://wiki.centos.org/PackageManagement/Yum/FastestMirror) yum plugin should be enabled.
 
-## Dependencies
-
-The `kubespray-defaults` role is expected to be run before this role.
-
 ## Example Playbook
 
 Remember to disable fact gathering since Python might not be present on hosts.
diff --git a/playbooks/facts.yml b/playbooks/facts.yml
index d35eea80c28ae5547282be654fc2e72abc3ba630..89410cad49b59dc73c0e48db419298322b649a65 100644
--- a/playbooks/facts.yml
+++ b/playbooks/facts.yml
@@ -10,8 +10,8 @@
     # fail. bootstrap-os fixes this on these systems, so in later plays it can be enabled.
     ansible_ssh_pipelining: false
   roles:
-    - { role: kubespray-defaults }
     - { role: bootstrap-os, tags: bootstrap-os}
+    - { role: kubespray-defaults }
 
 - name: Gather facts
   hosts: k8s_cluster:etcd:calico_rr
diff --git a/roles/kubespray-defaults/tasks/main.yaml b/roles/kubespray-defaults/tasks/main.yaml
index 0a9d987a7f0838d431e6220bcff8681c2007674e..282a4cd606ef558ed0ad11b4b189392f7da79375 100644
--- a/roles/kubespray-defaults/tasks/main.yaml
+++ b/roles/kubespray-defaults/tasks/main.yaml
@@ -1,10 +1,5 @@
 ---
 - name: Set facts variables
-  # do not run gather facts when bootstrap-os in roles
-  when: >
-        ansible_play_role_names |
-        intersect(['bootstrap-os', 'kubernetes_sigs.kubespray.bootstrap-os']) |
-        length == 0
   tags:
     - always
   block: