diff --git a/inventory/inventory.example b/inventory/inventory.example
index df5d077cc5fea8b086fa2f43d6ee122b19037fbc..2ccbc0462ddebe75948ad7c066faff1ae947ad03 100644
--- a/inventory/inventory.example
+++ b/inventory/inventory.example
@@ -1,5 +1,5 @@
 [downloader]
-node1 ansible_ssh_host=10.99.0.26
+node1 ansible_ssh_host=10.99.0.26 ansible_connection=local
 
 [kube-master]
 node1 ansible_ssh_host=10.99.0.26
diff --git a/roles/kubernetes/preinstall/tasks/download.yml b/roles/kubernetes/preinstall/tasks/download.yml
index efc8aac76b1f42f63ab08aa131a9d09a37ef2497..c8749a03e59d65ef68153b7c9be3168b4894c343 100644
--- a/roles/kubernetes/preinstall/tasks/download.yml
+++ b/roles/kubernetes/preinstall/tasks/download.yml
@@ -4,13 +4,11 @@
      path={{ local_release_dir }}/calico/bin
      recurse=yes
      state=directory
-  delegate_to: "{{ groups['kube-master'][0] }}"
 
 - name: Check if calicoctl has been downloaded
   local_action: stat
      path={{ local_release_dir }}/calico/bin/calicoctl
   register: c_tar
-  delegate_to: "{{ groups['kube-master'][0] }}"
 
 # issues with get_url module and redirects, to be tested again in the near future
 - name: Download calico
@@ -18,7 +16,6 @@
     curl -o {{ local_release_dir }}/calico/bin/calicoctl -Ls {{ calico_download_url }}/{{ calico_version }}/calicoctl
   when: not c_tar.stat.exists
   register: dl_calico
-  delegate_to: "{{ groups['kube-master'][0] }}"
 
 
 - name: Download calico-kubernetes-plugin
@@ -31,13 +28,11 @@
      path={{ local_release_dir }}/flannel
      recurse=yes
      state=directory
-  delegate_to: "{{ groups['kube-master'][0] }}"
 
 - name: Check if flannel release archive has been downloaded
   local_action: stat
      path={{ local_release_dir }}/flannel/flannel-{{ flannel_version }}-linux-amd64.tar.gz
   register: f_tar
-  delegate_to: "{{ groups['kube-master'][0] }}"
 
 # issues with get_url module and redirects, to be tested again in the near future
 - name: Download flannel
@@ -45,14 +40,12 @@
     curl -o {{ local_release_dir }}/flannel/flannel-{{ flannel_version }}-linux-amd64.tar.gz -Ls {{ flannel_download_url }}/v{{ flannel_version }}/flannel-{{ flannel_version }}-linux-amd64.tar.gz
   when: not f_tar.stat.exists
   register: dl_flannel
-  delegate_to: "{{ groups['kube-master'][0] }}"
 
 - name: Extract flannel archive
   local_action: unarchive
      src={{ local_release_dir }}/flannel/flannel-{{ flannel_version }}-linux-amd64.tar.gz
      dest={{ local_release_dir }}/flannel copy=no
   when: dl_flannel|changed
-  delegate_to: "{{ groups['kube-master'][0] }}"
 
 - name: Pick up only flannel binaries
   local_action: copy
diff --git a/roles/kubernetes/preinstall/tasks/main.yml b/roles/kubernetes/preinstall/tasks/main.yml
index 3505133bc10f967b5365aef08ab2a3e3e709aa9a..be017b5b6900c5215ede38ff4fa6c8e6c071d617 100644
--- a/roles/kubernetes/preinstall/tasks/main.yml
+++ b/roles/kubernetes/preinstall/tasks/main.yml
@@ -1,7 +1,7 @@
 ---
 - include: download.yml
-  delegate_to: localhost
-  when: inventory_hostname == "{{ groups['kube-master'][0] }}"
+  run_once: true
+  delegate_to: "{{ groups['downloader'][0] }}"
 
 - name: "Identify init system"
   shell: >