diff --git a/roles/etcd/tasks/install.yml b/roles/etcd/tasks/install.yml
index ac3522f4d7bbd12ab1d12728d56bd90722613fc2..8d442e6b3af81784c8d62860499ff750d983c329 100644
--- a/roles/etcd/tasks/install.yml
+++ b/roles/etcd/tasks/install.yml
@@ -15,3 +15,9 @@
 
 - name: Create etcd2 binary symlink
   file: src=/usr/local/bin/etcd dest=/usr/local/bin/etcd2 state=link
+
+- name: install required python module 'httplib2'
+  apt:
+    name: "python-httplib2"
+    state: present
+  when: inventory_hostname == groups['kube-master'][0] or inventory_hostname == groups['etcd'][0]
diff --git a/roles/kubernetes/master/tasks/main.yml b/roles/kubernetes/master/tasks/main.yml
index 987c41c6e599fe14f65fa6945692b9e6f44e056f..ad2739d00408907a86b0fe8e1d84401ac5513aa8 100644
--- a/roles/kubernetes/master/tasks/main.yml
+++ b/roles/kubernetes/master/tasks/main.yml
@@ -32,6 +32,7 @@
     - "{{ kube_cert_dir }}"
     - "{{ kube_users_dir }}"
   delegate_to: "{{ groups['kube-master'][0] }}"
+  when: inventory_hostname != "{{ groups['kube-master'][0] }}"
 
 # Write manifests
 - name: Write kube-apiserver manifest
@@ -48,12 +49,6 @@
     port: "{{kube_apiserver_insecure_port}}"
     delay: 10
 
-- name: install required python module 'httplib2'
-  apt:
-    name: "python-httplib2"
-    state: present
-  when: inventory_hostname == groups['kube-master'][0]
-
 - name: Create 'kube-system' namespace
   uri:
     url: http://127.0.0.1:{{ kube_apiserver_insecure_port }}/api/v1/namespaces