diff --git a/roles/kubernetes-apps/network_plugin/flannel/tasks/main.yml b/roles/kubernetes-apps/network_plugin/flannel/tasks/main.yml
index 607c7d61774fc21b184934eeaf9e4bd428992f05..09603a79430e04d2e904419673f70c9d25c43255 100644
--- a/roles/kubernetes-apps/network_plugin/flannel/tasks/main.yml
+++ b/roles/kubernetes-apps/network_plugin/flannel/tasks/main.yml
@@ -1,19 +1,14 @@
 ---
-- name: "Flannel | Create ServiceAccount ClusterRole and ClusterRoleBinding"
-  command: "{{ bin_dir }}/kubectl apply -f {{ kube_config_dir }}/cni-flannel-rbac.yml"
-  run_once: true
-  when: rbac_enabled and flannel_rbac_manifest.changed
-
 - name: Flannel | Start Resources
   kube:
-    name: "kube-flannel"
-    kubectl: "{{ bin_dir }}/kubectl"
-    filename: "{{ kube_config_dir }}/cni-flannel.yml"
-    resource: "ds"
-    namespace: "{{system_namespace}}"
+    name: "{{item.item.name}}"
+    namespace: "{{ system_namespace }}"
+    kubectl: "{{bin_dir}}/kubectl"
+    resource: "{{item.item.type}}"
+    filename: "{{kube_config_dir}}/{{item.item.file}}"
     state: "latest"
-  with_items: "{{ flannel_manifest.changed }}"
-  when: inventory_hostname == groups['kube-master'][0]
+  with_items: "{{ flannel_node_manifests.results }}"
+  when: inventory_hostname == groups['kube-master'][0] and not item|skipped
 
 - name: Flannel | Wait for flannel subnet.env file presence
   wait_for:
diff --git a/roles/network_plugin/flannel/tasks/main.yml b/roles/network_plugin/flannel/tasks/main.yml
index 7da3bfaa4d646045f312b96b7a0182f1dadb99ca..77f3b22261dcc4b454eeff647dde8c6f4472257a 100644
--- a/roles/network_plugin/flannel/tasks/main.yml
+++ b/roles/network_plugin/flannel/tasks/main.yml
@@ -1,16 +1,14 @@
 ---
 - include: pre-upgrade.yml
 
-- name: Flannel | Create cni-flannel-rbac manifest
+- name: Flannel | Create Flannel manifests
   template:
-    src: cni-flannel-rbac.yml.j2
-    dest: "{{ kube_config_dir }}/cni-flannel-rbac.yml"
-  register: flannel_rbac_manifest
-  when: inventory_hostname == groups['kube-master'][0] and rbac_enabled
-
-- name: Flannel | Create cni-flannel manifest
-  template:
-    src: cni-flannel.yml.j2
-    dest: "{{ kube_config_dir }}/cni-flannel.yml"
-  register: flannel_manifest
-  when: inventory_hostname == groups['kube-master'][0]
\ No newline at end of file
+    src: "{{item.file}}.j2"
+    dest: "{{kube_config_dir}}/{{item.file}}"
+  with_items:
+    - {name: flannel, file: cni-flannel-rbac.yml, type: sa}
+    - {name: kube-flannel, file: cni-flannel.yml, type: ds}
+  register: flannel_node_manifests
+  when:
+    - inventory_hostname in groups['kube-master']
+    - rbac_enabled or item.type not in rbac_resources
\ No newline at end of file