diff --git a/roles/kubernetes-apps/policy_controller/calico/tasks/main.yml b/roles/kubernetes-apps/policy_controller/calico/tasks/main.yml
index 59a31e40c0c2ede27bec2d3e906fb09774bfc206..e4169b237c76f2b73f62913aeb26ac411d7200e9 100644
--- a/roles/kubernetes-apps/policy_controller/calico/tasks/main.yml
+++ b/roles/kubernetes-apps/policy_controller/calico/tasks/main.yml
@@ -33,6 +33,9 @@
     state: "latest"
   with_items:
     - "{{ calico_kube_manifests.results }}"
+  register: calico_kube_controller_start
+  until: calico_kube_controller_start is succeeded
+  retries: 4
   when:
     - inventory_hostname == groups['kube_control_plane'][0]
     - not item is skipped