diff --git a/roles/docker/tasks/main.yml b/roles/docker/tasks/main.yml
index 6d71c498022d71b6639e32b0ca80657bc998993c..826e16978697da3325846574e82cc3e61d53c911 100644
--- a/roles/docker/tasks/main.yml
+++ b/roles/docker/tasks/main.yml
@@ -27,6 +27,10 @@
     id: "{{item}}"
     keyserver: "{{docker_repo_key_info.keyserver}}"
     state: present
+  register: keyserver_task_result
+  until: keyserver_task_result|success
+  retries: 4
+  delay: "{{ 20 | random + 3 }}"
   with_items: "{{ docker_repo_key_info.repo_keys }}"
   when: ansible_os_family != "CoreOS"
 
@@ -51,6 +55,10 @@
     pkg: "{{item.name}}"
     force: "{{item.force|default(omit)}}"
     state: present
+  register: docker_task_result
+  until: docker_task_result|success
+  retries: 4
+  delay: "{{ 20 | random + 3 }}"
   with_items: "{{ docker_package_info.pkgs }}"
   when: (ansible_os_family != "CoreOS") and (docker_package_info.pkgs|length > 0)
 
diff --git a/roles/etcd/tasks/install.yml b/roles/etcd/tasks/install.yml
index 26271943a3730b070752a4a8fbdd39023f3927c2..959133c29fd61f2d38da28f9bec45261a0c6b499 100644
--- a/roles/etcd/tasks/install.yml
+++ b/roles/etcd/tasks/install.yml
@@ -17,6 +17,10 @@
            /usr/bin/docker cp etcdctl-binarycopy:{{ etcd_container_bin_dir }}etcdctl {{ bin_dir }}/etcdctl &&
            /usr/bin/docker rm -f etcdctl-binarycopy"
   when: etcd_deployment_type == "docker"
+  register: etcd_task_result
+  until: etcd_task_result.rc == 0
+  retries: 4
+  delay: "{{ 20 | random + 3 }}"
   changed_when: false
 
 #Plan B: looks nicer, but requires docker-py on all hosts:
diff --git a/roles/kubernetes/master/tasks/main.yml b/roles/kubernetes/master/tasks/main.yml
index 4d093355073c0829ff8d36fca5c8a544c73460d1..e8dfe08fcd12b4992c8ad1cc7cf3bc9b6beb55e5 100644
--- a/roles/kubernetes/master/tasks/main.yml
+++ b/roles/kubernetes/master/tasks/main.yml
@@ -9,8 +9,11 @@
 
 - name: Copy kubectl from hyperkube container
   command: "/usr/bin/docker run --rm -v {{ bin_dir }}:/systembindir {{ hyperkube_image_repo }}:{{ hyperkube_image_tag }} /bin/cp /hyperkube /systembindir/kubectl"
+  register: kube_task_result
+  until: kube_task_result.rc == 0
+  retries: 4
+  delay: "{{ 20 | random + 3 }}"
   changed_when: false
-  register: kubectl_launcher
 
 - name: Write kube-apiserver manifest
   template:
diff --git a/roles/kubernetes/preinstall/tasks/main.yml b/roles/kubernetes/preinstall/tasks/main.yml
index ec1bd64c0ef436140344da9f931f7567e4b43ca8..8c22b73bfe1a8290d33aea9470957fcec98b5af3 100644
--- a/roles/kubernetes/preinstall/tasks/main.yml
+++ b/roles/kubernetes/preinstall/tasks/main.yml
@@ -101,6 +101,10 @@
     module: "{{ ansible_pkg_mgr }}"
     name: "{{ item }}"
     state: latest
+  register: pkgs_task_result
+  until: pkgs_task_result|success
+  retries: 4
+  delay: "{{ 20 | random + 3 }}"
   with_items: "{{required_pkgs | default([]) | union(common_required_pkgs|default([]))}}"
   when: ansible_os_family != "CoreOS"
 
diff --git a/roles/network_plugin/calico/tasks/main.yml b/roles/network_plugin/calico/tasks/main.yml
index 75cf2d4a266ba68413e65e45de87e160c3370e3b..eef15816a6b68e4e2503c81ec975c2bcb1f482f1 100644
--- a/roles/network_plugin/calico/tasks/main.yml
+++ b/roles/network_plugin/calico/tasks/main.yml
@@ -45,6 +45,10 @@
 
 - name: Calico | Copy cni plugins from hyperkube
   command: "/usr/bin/docker run --rm -v /opt/cni/bin:/cnibindir {{ hyperkube_image_repo }}:{{ hyperkube_image_tag }} /bin/cp -r /opt/cni/bin/. /cnibindir/"
+  register: cni_task_result
+  until: cni_task_result.rc == 0
+  retries: 4
+  delay: "{{ 20 | random + 3 }}"
   changed_when: false
   when: use_hyperkube_cni