diff --git a/defaults/main.yml b/defaults/main.yml
index efcf32d3..1e1c609c 100644
--- a/defaults/main.yml
+++ b/defaults/main.yml
@@ -20,6 +20,9 @@ nova_ceilometer_enabled: False
 debug: False
 verbose: True
 
+## APT Cache options
+cache_timeout: 600
+
 # Name of the virtual env to deploy into
 nova_venv_tag: untagged
 nova_venv_bin: "/openstack/venvs/nova-{{ nova_venv_tag }}/bin"
diff --git a/tasks/nova_compute_kvm_install.yml b/tasks/nova_compute_kvm_install.yml
index 40b6231d..90ffcea5 100644
--- a/tasks/nova_compute_kvm_install.yml
+++ b/tasks/nova_compute_kvm_install.yml
@@ -13,14 +13,21 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-- name: Update apt sources
+#TODO(evrardjp): Replace the next 2 tasks by a standard apt with cache
+#when https://github.com/ansible/ansible-modules-core/pull/1517 is merged
+#in 1.9.x or we move to 2.0 (if tested working)
+- name: Check apt last update file
+  stat:
+    path: /var/cache/apt
+  register: apt_cache_stat
+  tags:
+    - nova-apt-packages
+    - nova-compute-kvm-apt-packages
+
+- name: Update apt if needed
   apt:
     update_cache: yes
-    cache_valid_time: 600
-  register: apt_update
-  until: apt_update|success
-  retries: 5
-  delay: 2
+  when: "ansible_date_time.epoch|float - apt_cache_stat.stat.mtime > {{cache_timeout}}"
   tags:
     - nova-apt-packages
     - nova-compute-kvm-apt-packages
diff --git a/tasks/nova_console_novnc_install.yml b/tasks/nova_console_novnc_install.yml
index 8ef6819c..08273eb5 100644
--- a/tasks/nova_console_novnc_install.yml
+++ b/tasks/nova_console_novnc_install.yml
@@ -29,14 +29,20 @@
     - nova-install
     - nova-novnc-git
 
-- name: Update apt sources
+#TODO(evrardjp): Replace the next 2 tasks by a standard apt with cache
+#when https://github.com/ansible/ansible-modules-core/pull/1517 is merged
+#in 1.9.x or we move to 2.0 (if tested working)
+- name: Check apt last update file
+  stat:
+    path: /var/cache/apt
+  register: apt_cache_stat
+  tags:
+    - nova-apt-packages
+
+- name: Update apt if needed
   apt:
     update_cache: yes
-    cache_valid_time: 600
-  register: apt_update
-  until: apt_update|success
-  retries: 5
-  delay: 2
+  when: "ansible_date_time.epoch|float - apt_cache_stat.stat.mtime > {{cache_timeout}}"
   tags:
     - nova-apt-packages
     - nova-novnc-apt-packages
diff --git a/tasks/nova_console_spice_install.yml b/tasks/nova_console_spice_install.yml
index 5086bf47..353cde81 100644
--- a/tasks/nova_console_spice_install.yml
+++ b/tasks/nova_console_spice_install.yml
@@ -13,14 +13,21 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-- name: Update apt sources
+#TODO(evrardjp): Replace the next 2 tasks by a standard apt with cache
+#when https://github.com/ansible/ansible-modules-core/pull/1517 is merged
+#in 1.9.x or we move to 2.0 (if tested working)
+- name: Check apt last update file
+  stat:
+    path: /var/cache/apt
+  register: apt_cache_stat
+  tags:
+    - nova-apt-packages
+    - nova-spice-apt-packages
+
+- name: Update apt if needed
   apt:
     update_cache: yes
-    cache_valid_time: 600
-  register: apt_update
-  until: apt_update|success
-  retries: 5
-  delay: 2
+  when: "ansible_date_time.epoch|float - apt_cache_stat.stat.mtime > {{cache_timeout}}"
   tags:
     - nova-apt-packages
     - nova-spice-apt-packages
diff --git a/tasks/nova_install.yml b/tasks/nova_install.yml
index 58b6204e..7bea71a9 100644
--- a/tasks/nova_install.yml
+++ b/tasks/nova_install.yml
@@ -13,14 +13,20 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-- name: Update apt sources
+#TODO(evrardjp): Replace the next 2 tasks by a standard apt with cache
+#when https://github.com/ansible/ansible-modules-core/pull/1517 is merged
+#in 1.9.x or we move to 2.0 (if tested working)
+- name: Check apt last update file
+  stat:
+    path: /var/cache/apt
+  register: apt_cache_stat
+  tags:
+    - nova-apt-packages
+
+- name: Update apt if needed
   apt:
     update_cache: yes
-    cache_valid_time: 600
-  register: apt_update
-  until: apt_update|success
-  retries: 5
-  delay: 2
+  when: "ansible_date_time.epoch|float - apt_cache_stat.stat.mtime > {{cache_timeout}}"
   tags:
     - nova-apt-packages