diff --git a/roles/kubernetes/master/tasks/main.yml b/roles/kubernetes/master/tasks/main.yml
index 0ba27a33ef41beab157fc054cd70cdbdaabdbb7f..897154b88b06be30b32900abca896fc65247b9c0 100644
--- a/roles/kubernetes/master/tasks/main.yml
+++ b/roles/kubernetes/master/tasks/main.yml
@@ -5,11 +5,17 @@
     dest: /etc/bash_completion.d/kubectl.sh
 
 - name: Install kubectl binary
-  copy:
-     src={{ local_release_dir }}/kubernetes/bin/kubectl
-     dest={{ bin_dir }}
-     owner=kube
-     mode=0755
+  synchronize:
+     src: "{{ local_release_dir }}/kubernetes/bin/kubectl"
+     dest: "{{ bin_dir }}/kubectl"
+     mode: pull
+     archive: no
+     checksum: yes
+     times: yes
+  delegate_to: "{{ groups['downloader'][0] }}"
+
+- name: Perms kubectl binary
+  file: path={{ bin_dir }}/kubelet owner=kube mode=0755 state=file
 
 - name: populate users for basic auth in API
   lineinfile:
diff --git a/roles/kubernetes/node/tasks/install.yml b/roles/kubernetes/node/tasks/install.yml
index 815a4bc46bf9999d9067d70e38f9adc93b1d8803..87bef9d5dba83d4ed001f607065e81da0d174a8e 100644
--- a/roles/kubernetes/node/tasks/install.yml
+++ b/roles/kubernetes/node/tasks/install.yml
@@ -15,22 +15,33 @@
   notify: restart kubelet
 
 - name: Install kubelet binary
-  copy:
-     src={{ local_release_dir }}/kubernetes/bin/kubelet
-     dest={{ bin_dir }}
-     owner=kube
-     mode=0755
+  synchronize:
+     src: "{{ local_release_dir }}/kubernetes/bin/kubelet"
+     dest: "{{ bin_dir }}/kubelet"
+     mode: pull
+     times: yes
+     archive: no
+  delegate_to: "{{ groups['downloader'][0] }}"
   notify:
     - restart kubelet
 
+- name: Perms kubelet binary
+  file: path={{ bin_dir }}/kubelet owner=kube mode=0755 state=file
+
 - name: Calico-plugin | Directory
   file: path=/usr/libexec/kubernetes/kubelet-plugins/net/exec/calico/ state=directory
   when: kube_network_plugin == "calico"
 
 - name: Calico-plugin | Binary
-  copy:
-    src={{ local_release_dir }}/calico/bin/calico
-    dest=/usr/libexec/kubernetes/kubelet-plugins/net/exec/calico/calico
-    mode=0755
+  synchronize:
+    src: "{{ local_release_dir }}/calico/bin/calico"
+    dest: "/usr/libexec/kubernetes/kubelet-plugins/net/exec/calico/calico"
+    mode: "pull"
+    times: yes
+    archive: no
+  delegate_to: "{{ groups['downloader'][0] }}"
   when: kube_network_plugin == "calico"
   notify: restart kubelet
+
+- name: Perms calico plugin binary
+  file: path=/usr/libexec/kubernetes/kubelet-plugins/net/exec/calico/calico owner=kube mode=0755 state=file
diff --git a/roles/network_plugin/tasks/calico.yml b/roles/network_plugin/tasks/calico.yml
index 95803daf2e64664d02c04fb84e296abfc9ec2925..997b416d7f31499377301b6fadd85a8aee51e569 100644
--- a/roles/network_plugin/tasks/calico.yml
+++ b/roles/network_plugin/tasks/calico.yml
@@ -1,11 +1,18 @@
 ---
+
 - name: Calico | Install calicoctl bin
-  copy:
+  synchronize:
     src: "{{ local_release_dir }}/calico/bin/calicoctl"
-    dest: "{{ bin_dir }}"
-    mode: 0755
+    dest: "{{ bin_dir }}/calicoctl"
+    mode: pull
+    archive: no
+    times: yes
+  delegate_to: "{{ groups['downloader'][0] }}"
   notify: restart calico-node
 
+- name: Calico | install calicoctl
+  file: path={{ bin_dir }}/calicoctl mode=0755 state=file
+
 - name: Calico | Create calicoctl symlink (needed by kubelet)
   file:
     src: /usr/local/bin/calicoctl
@@ -39,7 +46,7 @@
   fail:
     msg: 'Only one network pool must be configured and it must be the subnet {{ kube_pods_subnet }}.
     Please erase calico configuration and run the playbook again ("etcdctl rm --recursive /calico/v1/ipam/v4/pool")'
-  when: ( calico_pools.json['node']['nodes'] | length > 1 ) or 
+  when: ( calico_pools.json['node']['nodes'] | length > 1 ) or
         ( not calico_pools.json['node']['nodes'][0]['key'] | search(".*{{ kube_pods_subnet | ipaddr('network') }}.*") )
   run_once: true
   delegate_to: "{{ groups['etcd'][0] }}"
diff --git a/roles/network_plugin/tasks/flannel.yml b/roles/network_plugin/tasks/flannel.yml
index a43be9e403212cc42e452dc87a7f3791eb2fdb21..69f63a749c5f22a33b7fa5d2be736c4858f94e55 100644
--- a/roles/network_plugin/tasks/flannel.yml
+++ b/roles/network_plugin/tasks/flannel.yml
@@ -3,14 +3,19 @@
   user: name=flannel shell=/bin/nologin
 
 - name: Install flannel binaries
-  copy: 
-     src={{ local_release_dir }}/flannel/bin/flanneld
-     dest={{ bin_dir }}
-     owner=flannel
-     mode=u+x
+  synchronize:
+     src: "{{ local_release_dir }}/flannel/bin/flanneld"
+     dest: "{{ bin_dir }}/flanneld"
+     mode: pull
+     archive: no
+     times: yes
+  delegate_to: "{{ groups['downloader'][0] }}"
   notify:
     - restart flannel
 
+- name: Perms flannel binary
+  file: path={{ bin_dir }}/flanneld owner=flannel mode=0755 state=file
+
 - name: Write flannel.service systemd file
   template:
     src: flannel/systemd-flannel.service.j2