diff --git a/roles/network_plugin/tasks/calico.yml b/roles/network_plugin/tasks/calico.yml
index e33b31247a4b08f7954a285172fcb13a186f9667..3c512501aca892c456fc56b3e084580905a75187 100644
--- a/roles/network_plugin/tasks/calico.yml
+++ b/roles/network_plugin/tasks/calico.yml
@@ -26,10 +26,15 @@
   register: calico_conf
   run_once: true
 
+- name: Calico | Configure calico network pool for cloud
+  command: "calicoctl pool add {{ kube_pods_subnet }} --ipip"
+  run_once: true
+  when: calico_conf.status == 404 and cloud_provider is defined and cloud_provider == True
+
 - name: Calico | Configure calico network pool
-  shell: calicoctl pool add {{ kube_pods_subnet }}  {%- if cloud_provider is defined and cloud_provider == True -%} --ipip{%- endif -%}
+  command: "calicoctl pool add {{ kube_pods_subnet }}"
   run_once: true
-  when: calico_conf.status == 404
+  when: calico_conf.status == 404 and (cloud_provider is not defined or cloud_provider != True)
 
 - name: Calico | Get calico configuration from etcd
   uri: