diff --git a/roles/kubernetes-apps/network_plugin/weave/tasks/main.yml b/roles/kubernetes-apps/network_plugin/weave/tasks/main.yml
index 7938f8edd48aebab5d530219077b84368f5e15d0..9dcfde4945affe20dc4cfb9a7c61696b35afa820 100644
--- a/roles/kubernetes-apps/network_plugin/weave/tasks/main.yml
+++ b/roles/kubernetes-apps/network_plugin/weave/tasks/main.yml
@@ -8,17 +8,17 @@
     namespace: "{{system_namespace}}"
     state: "{{ item | ternary('latest','present') }}"
   with_items: "{{ weave_manifest.changed }}"
+  delegate_to: "{{groups['kube-master'][0]}}"
 
 
 - name: "Weave | wait for weave to become available"
   uri:
     url: http://127.0.0.1:6784/status
     return_content: yes
+  run_once: true
   register: weave_status
   retries: 10
   delay: "{{ retry_stagger | random + 3 }}"
-  until: weave_status.status == 200
-
-- name: "Weave | check if weave is ready"
-  fail:
-  when: "'Status: ready' not in weave_status.content"
+  until: "{{ weave_status.status == 200 and
+    'Status: ready' in weave_status.content }}"
+  delegate_to: "{{groups['kube-master'][0]}}"
diff --git a/roles/network_plugin/weave/defaults/main.yml b/roles/network_plugin/weave/defaults/main.yml
index 91933ecf46de8cf9cd46d9a26e1bcc6c9781c70b..07c07722d25d70ca7e8db256f647d07f5970a486 100644
--- a/roles/network_plugin/weave/defaults/main.yml
+++ b/roles/network_plugin/weave/defaults/main.yml
@@ -1,6 +1,6 @@
 ---
 # Limits
 weave_memory_limit: 500M
-weave_cpu_limit: 300m
+weave_cpu_limit: 30m
 weave_memory_requests: 300M
-weave_cpu_requests: 200m
+weave_cpu_requests: 10m