diff --git a/roles/network_plugin/calico/tasks/install.yml b/roles/network_plugin/calico/tasks/install.yml
index 123733016782f7db0face0613fd52c63f6bc58ce..9de50c05dc6c45de8b1382ca8a6a5d6223d682ec 100644
--- a/roles/network_plugin/calico/tasks/install.yml
+++ b/roles/network_plugin/calico/tasks/install.yml
@@ -221,7 +221,7 @@
   retries: 4
   delay: "{{ retry_stagger | random + 3 }}"
   with_items:
-    - "{{ peers|rejectattr('scope','equalto', 'global')|default([]) }}"
+    - "{{ peers|selectattr('scope','undefined')|list|default([]) | union(peers|selectattr('scope','defined')|selectattr('scope','equalto', 'node')|list|default([])) }}"
   when:
     - calico_version is version('v3.0.0', '>=')
     - peer_with_router|default(false)
@@ -238,7 +238,7 @@
    | {{ bin_dir }}/calicoctl create --skip-exists -f -
   retries: 4
   delay: "{{ retry_stagger | random + 3 }}"
-  with_items: "{{ peers|rejectattr('scope','equalto', 'global')|default([]) }}"
+  with_items: "{{ peers|selectattr('scope','undefined')|list|default([]) | union(peers|selectattr('scope','defined')|selectattr('scope','equalto', 'node')|list|default([])) }}"
   when:
     - calico_version | version_compare('v3.0.0', '<')
     - peer_with_router|default(false)
@@ -259,7 +259,7 @@
   retries: 4
   delay: "{{ retry_stagger | random + 3 }}"
   with_items:
-    - "{{ peers|selectattr('scope','equalto', 'global')|default([]) }}"
+    - "{{ peers|selectattr('scope','defined')|selectattr('scope','equalto', 'global')|list|default([]) }}"
   run_once: true
   when:
     - calico_version | version_compare('v3.0.0', '>=')
@@ -277,7 +277,7 @@
    | {{ bin_dir }}/calicoctl create --skip-exists -f -
   retries: 4
   delay: "{{ retry_stagger | random + 3 }}"
-  with_items: "{{ peers|selectattr('scope','equalto', 'global')|default([]) }}"
+  with_items: "{{ peers|selectattr('scope','defined')|selectattr('scope','equalto', 'global')|default([]) }}"
   run_once: true
   when:
     - calico_version is version('v3.0.0', '<')