diff --git a/.travis.yml b/.travis.yml
index 6d8ab8f16f90ea1d7a38b1e93cbc5829fda60649..0412ee732ecf251338b8130c0ee8d05e90abca24 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -119,6 +119,7 @@ cache:
   - directories:
     - $HOME/.cache/pip
     - $HOME/.local
+    - /var/tmp/releases
 
 before_script:
   - echo "RUN $TRAVIS_JOB_NUMBER $KUBE_NETWORK_PLUGIN $CONTAINER_ENGINE "
@@ -151,6 +152,8 @@ script:
     -b --become-user=root -e cloud_provider=gce  $LOG_LEVEL -e kube_network_plugin=${KUBE_NETWORK_PLUGIN}
     -e bootstrap_os=${BOOTSTRAP_OS}
     -e ansible_python_interpreter=${PYPATH}
+    -e download_run_once=true
+    -e local_release_dir=/var/tmp/releases
     cluster.yml
 
     # Tests Cases
diff --git a/roles/download/tasks/main.yml b/roles/download/tasks/main.yml
index e715f380d339c286b52046d80b256c916b0558f2..4edb0b2d03c148c26f0320f9bddad0b75a6fc31b 100644
--- a/roles/download/tasks/main.yml
+++ b/roles/download/tasks/main.yml
@@ -44,7 +44,7 @@
   when: "{{ download.enabled|bool and download.container|bool }}"
 
 - name: Create dest directory for saved/loaded container images
-  file: path="{{local_release_dir}}/containers" state=directory recurse=yes
+  file: path="{{local_release_dir}}/containers" state=directory recurse=yes mode=0755 owner="{{ansible_ssh_user}}"
   when: "{{ download.enabled|bool and download.container|bool }}"
 
 #NOTE(bogdando) this brings no docker-py deps for nodes
@@ -78,11 +78,29 @@
   run_once: true
   when: ansible_os_family != "CoreOS" and download_run_once|bool and download.enabled|bool and download.container|bool and container_changed|bool
 
-- name: Download | get container images
+- name: Download | create local directory for saved/loaded container images
+  file: path="{{local_release_dir}}/containers" state=directory recurse=yes mode=0755
+  delegate_to: localhost
+  become: false
+  run_once: true
+  when: "{{ download.enabled|bool and download.container|bool }}"
+
+- name: Download | copy container images to ansible host
+  synchronize:
+    src: "{{ fname }}"
+    dest: "{{ fname }}"
+    mode: pull
+  delegate_to: localhost
+  become: false
+  when: ansible_os_family != "CoreOS" and inventory_hostname == groups['kube-master'][0] and download_run_once|bool and download.enabled|bool and download.container|bool
+
+- name: Download | upload container images to nodes
   synchronize:
     src: "{{ fname }}"
-    dest: "{{local_release_dir}}/containers"
+    dest: "{{ fname }}"
     mode: push
+  delegate_to: localhost
+  become: false
   register: get_task
   until: get_task|success
   retries: 4