diff --git a/roles/bootstrap-os/tasks/bootstrap-coreos.yml b/roles/bootstrap-os/tasks/bootstrap-coreos.yml
index 18747f13993690c1385d97d76b31049f2ee8d4e9..cf46b43f9273bf59e41cf440df0c6a1c8ff19e9f 100644
--- a/roles/bootstrap-os/tasks/bootstrap-coreos.yml
+++ b/roles/bootstrap-os/tasks/bootstrap-coreos.yml
@@ -3,7 +3,8 @@
   raw: stat /opt/bin/.bootstrapped
   register: need_bootstrap
   failed_when: false
-  tags: facts
+  tags:
+    - facts
 
 - name: Bootstrap | Run bootstrap.sh
   script: bootstrap.sh
@@ -11,7 +12,8 @@
 
 - set_fact:
     ansible_python_interpreter: "/opt/bin/python"
-  tags: facts
+  tags:
+    - facts
 
 - name: Bootstrap | Check if we need to install pip
   shell: "{{ansible_python_interpreter}} -m pip --version"
@@ -20,7 +22,8 @@
   changed_when: false
   check_mode: no
   when: need_bootstrap.rc != 0
-  tags: facts
+  tags:
+    - facts
 
 - name: Bootstrap | Copy get-pip.py
   copy:
diff --git a/roles/bootstrap-os/tasks/bootstrap-ubuntu.yml b/roles/bootstrap-os/tasks/bootstrap-ubuntu.yml
index 64df71bd6cc8f2a35a7d37ce9b3ab5153054e37f..ad63a593fadd399929af536c1d56255a6f5e91fc 100644
--- a/roles/bootstrap-os/tasks/bootstrap-ubuntu.yml
+++ b/roles/bootstrap-os/tasks/bootstrap-ubuntu.yml
@@ -8,7 +8,8 @@
   with_items:
     - python
     - pip
-  tags: facts
+  tags:
+    - facts
 
 - name: Bootstrap | Install python 2.x and pip
   raw:
@@ -19,4 +20,5 @@
 
 - set_fact:
     ansible_python_interpreter: "/usr/bin/python"
-  tags: facts
+  tags:
+    - facts
diff --git a/roles/dnsmasq/meta/main.yml b/roles/dnsmasq/meta/main.yml
index 290754e33bc963756455b0249ef67c5f6e8460e0..aa0476977b2c631d34efa99dc46a8fb7b05d1bc2 100644
--- a/roles/dnsmasq/meta/main.yml
+++ b/roles/dnsmasq/meta/main.yml
@@ -3,4 +3,6 @@ dependencies:
   - role: download
     file: "{{ downloads.dnsmasq }}"
     when: dns_mode == 'dnsmasq_kubedns' and download_localhost|default(false)
-    tags: [download, dnsmasq]
+    tags:
+      - download
+      - dnsmasq
diff --git a/roles/dnsmasq/tasks/main.yml b/roles/dnsmasq/tasks/main.yml
index 4a90310135ebb5f1dfc492c94ddef0426e3f6e84..35b88f9dc51c6bd6ae5d09a7777ab774ae81940f 100644
--- a/roles/dnsmasq/tasks/main.yml
+++ b/roles/dnsmasq/tasks/main.yml
@@ -3,13 +3,15 @@
   file:
     path: /etc/dnsmasq.d
     state: directory
-  tags: bootstrap-os
+  tags:
+    - bootstrap-os
 
 - name: ensure dnsmasq.d-available directory exists
   file:
     path: /etc/dnsmasq.d-available
     state: directory
-  tags: bootstrap-os
+  tags:
+    - bootstrap-os
 
 - name: check system nameservers
   shell: awk '/^nameserver/ {print $NF}' /etc/resolv.conf
diff --git a/roles/docker/tasks/main.yml b/roles/docker/tasks/main.yml
index ef7e7fe8d9dde21d0d1c624b3c5af6e2bf32c49a..0ecd6756fa9d14176b5ff344c08803d02e07a892 100644
--- a/roles/docker/tasks/main.yml
+++ b/roles/docker/tasks/main.yml
@@ -12,11 +12,13 @@
       paths:
         - ../vars
       skip: true
-  tags: facts
+  tags:
+    - facts
 
 - include: set_facts_dns.yml
   when: dns_mode != 'none' and resolvconf_mode == 'docker_dns'
-  tags: facts
+  tags:
+    - facts
 
 - name: check for minimum kernel version
   fail:
@@ -25,7 +27,8 @@
           {{ docker_kernel_min_version }} on
           {{ ansible_distribution }}-{{ ansible_distribution_version }}
   when: (not ansible_os_family in ["CoreOS", "Container Linux by CoreOS"]) and (ansible_kernel|version_compare(docker_kernel_min_version, "<"))
-  tags: facts
+  tags:
+    - facts
 
 - name: ensure docker repository public key is installed
   action: "{{ docker_repo_key_info.pkg_key }}"
diff --git a/roles/download/tasks/main.yml b/roles/download/tasks/main.yml
index 9fa0d7ca819bf82fc6cf886fc21cc5782b656234..629c9221968a06c573c3afe2e2dda9a4cc1e0d2e 100644
--- a/roles/download/tasks/main.yml
+++ b/roles/download/tasks/main.yml
@@ -7,7 +7,8 @@
   when:
     - download.enabled|bool
     - not download.container|bool
-  tags: bootstrap-os
+  tags:
+    - bootstrap-os
 
 - name: file_download | Download item
   get_url:
@@ -50,7 +51,8 @@
 - set_fact:
     download_delegate: "{% if download_localhost|bool %}localhost{% else %}{{groups['kube-master'][0]}}{% endif %}"
   run_once: true
-  tags: facts
+  tags:
+    - facts
 
 - name: container_download | Create dest directory for saved/loaded container images
   file:
@@ -62,7 +64,8 @@
   when:
     - download.enabled|bool
     - download.container|bool
-  tags: bootstrap-os
+  tags:
+    - bootstrap-os
 
 # This is required for the download_localhost delegate to work smooth with Container Linux by CoreOS cluster nodes
 - name: container_download | Hack python binary path for localhost
@@ -70,7 +73,8 @@
   delegate_to: localhost
   when: download_delegate == 'localhost'
   failed_when: false
-  tags: localhost
+  tags:
+    - localhost
 
 - name: container_download | create local directory for saved/loaded container images
   file:
@@ -85,7 +89,8 @@
     - download.enabled|bool
     - download.container|bool
     - download_delegate == 'localhost'
-  tags: localhost
+  tags:
+    - localhost
 
 - name: container_download | Make download decision if pull is required by tag or sha256
   include: set_docker_image_facts.yml
@@ -94,7 +99,8 @@
     - download.container|bool
   delegate_to: "{{ download_delegate if download_run_once|bool or omit }}"
   run_once: "{{ download_run_once|bool }}"
-  tags: facts
+  tags:
+    - facts
 
 - name: container_download | Download containers if pull is required or told to always pull
   command: "{{ docker_bin_dir }}/docker pull {{ pull_args }}"
@@ -112,7 +118,8 @@
 - set_fact:
     fname: "{{local_release_dir}}/containers/{{download.repo|regex_replace('/|\0|:', '_')}}:{{download.tag|default(download.sha256)|regex_replace('/|\0|:', '_')}}.tar"
   run_once: true
-  tags: facts
+  tags:
+    - facts
 
 - name: "container_download | Set default value for 'container_changed' to false"
   set_fact:
@@ -126,7 +133,8 @@
     - download.container|bool
     - pull_required|bool|default(download_always_pull)
   run_once: "{{ download_run_once|bool }}"
-  tags: facts
+  tags:
+    - facts
 
 - name: container_download | Stat saved container image
   stat:
@@ -140,7 +148,8 @@
   delegate_to: "{{ download_delegate }}"
   become: false
   run_once: true
-  tags: facts
+  tags:
+    - facts
 
 - name: container_download | save container images
   shell: "{{ docker_bin_dir }}/docker save {{ pull_args }} | gzip -{{ download_compress }} > {{ fname }}"
@@ -188,7 +197,9 @@
     - download_run_once|bool
     - download.enabled|bool
     - download.container|bool
-  tags: [upload, upgrade]
+  tags:
+    - upload
+    - upgrade
 
 - name: container_download | load container images
   shell: "{{ docker_bin_dir }}/docker load < {{ fname }}"
@@ -198,4 +209,6 @@
     - download_run_once|bool
     - download.enabled|bool
     - download.container|bool
-  tags: [upload, upgrade]
+  tags:
+    - upload
+    - upgrade
diff --git a/roles/etcd/meta/main.yml b/roles/etcd/meta/main.yml
index 9bd6f02a31b044013db6f2d79f215a826be8c83a..5e6e581c250d89d10d2e1653f5aa5542c28abcf9 100644
--- a/roles/etcd/meta/main.yml
+++ b/roles/etcd/meta/main.yml
@@ -3,8 +3,10 @@ dependencies:
   - role: adduser
     user: "{{ addusers.etcd }}"
     when: not (ansible_os_family in ['CoreOS', 'Container Linux by CoreOS'] or is_atomic)
+
   - role: download
     file: "{{ downloads.etcd }}"
-    tags: download
+    tags:
+      - download
 
 # NOTE: Dynamic task dependency on Vault Role if cert_management == "vault"
diff --git a/roles/etcd/tasks/configure.yml b/roles/etcd/tasks/configure.yml
index 4546d7896812f538c2979b768859449be0d76ac2..5f8756e71015344914438755817dd7e58156c6f1 100644
--- a/roles/etcd/tasks/configure.yml
+++ b/roles/etcd/tasks/configure.yml
@@ -6,7 +6,8 @@
   changed_when: false
   check_mode: no
   when: is_etcd_master
-  tags: facts
+  tags:
+    - facts
 
 - name: Configure | Add member to the cluster if it is not there
   when: is_etcd_master and etcd_member_in_cluster.rc != 0 and etcd_cluster_is_healthy.rc == 0
diff --git a/roles/etcd/tasks/gen_certs_script.yml b/roles/etcd/tasks/gen_certs_script.yml
index 00b8b348900519f19ac6ec97ba44256914cc98c7..3fbafc52a48f7f1fa34dbd9a16033f29b5cff66e 100644
--- a/roles/etcd/tasks/gen_certs_script.yml
+++ b/roles/etcd/tasks/gen_certs_script.yml
@@ -83,7 +83,8 @@
                     'node-{{ node }}-key.pem',
                     {% endfor %}]"
     my_node_certs: ['ca.pem', 'node-{{ inventory_hostname }}.pem', 'node-{{ inventory_hostname }}-key.pem']
-  tags: facts
+  tags:
+    - facts
 
 - name: Gen_certs | Gather etcd master certs
   shell: "tar cfz - -C {{ etcd_cert_dir }} -T /dev/stdin <<< {{ my_master_certs|join(' ') }} {{ all_node_certs|join(' ') }} | base64 --wrap=0"
diff --git a/roles/etcd/tasks/gen_certs_vault.yml b/roles/etcd/tasks/gen_certs_vault.yml
index 0048a70030483bc8544fdebb62744ac00b36cc06..e8955cf70c51dabd1f0fa432d4e6b298853eb9bc 100644
--- a/roles/etcd/tasks/gen_certs_vault.yml
+++ b/roles/etcd/tasks/gen_certs_vault.yml
@@ -1,11 +1,13 @@
 ---
 - include: sync_etcd_master_certs.yml
   when: inventory_hostname in groups.etcd
-  tags: etcd-secrets
+  tags:
+    - etcd-secrets
 
 - include: sync_etcd_node_certs.yml
   when: inventory_hostname in etcd_node_cert_hosts
-  tags: etcd-secrets
+  tags:
+    - etcd-secrets
 
 # Issue master certs to Etcd nodes
 - include: ../../vault/tasks/shared/issue_cert.yml
diff --git a/roles/etcd/tasks/main.yml b/roles/etcd/tasks/main.yml
index d3bfe9628c7ed4029188868e88dac1c7c9c70e3e..2e0076f170293918ecf89a2e4d1d05971f4f37d6 100644
--- a/roles/etcd/tasks/main.yml
+++ b/roles/etcd/tasks/main.yml
@@ -1,13 +1,17 @@
 ---
 - include: check_certs.yml
   when: cert_management == "script"
-  tags: [etcd-secrets, facts]
+  tags:
+    - etcd-secrets
+    - facts
 
 - include: "gen_certs_{{ cert_management }}.yml"
-  tags: etcd-secrets
+  tags:
+    - etcd-secrets
 
 - include: upd_ca_trust.yml
-  tags: etcd-secrets
+  tags:
+    - etcd-secrets
 
 - name: "Gen_certs | Get etcd certificate serials"
   shell: "openssl x509 -in {{ etcd_cert_dir }}/node-{{ inventory_hostname }}.pem -noout -serial | cut -d= -f2"
@@ -16,7 +20,8 @@
 
 - include: "install_{{ etcd_deployment_type }}.yml"
   when: is_etcd_master
-  tags: upgrade
+  tags:
+    - upgrade
 
 - include: set_cluster_health.yml
   when: is_etcd_master and etcd_cluster_setup
diff --git a/roles/etcd/tasks/set_cluster_health.yml b/roles/etcd/tasks/set_cluster_health.yml
index 8cf5e8867b00285e2f745e093924f6b363bbe409..ecf248fec9b5b2433d1a1c540b338627cb3f61b2 100644
--- a/roles/etcd/tasks/set_cluster_health.yml
+++ b/roles/etcd/tasks/set_cluster_health.yml
@@ -6,4 +6,5 @@
   changed_when: false
   check_mode: no
   when: is_etcd_master
-  tags: facts
+  tags:
+    - facts
diff --git a/roles/etcd/tasks/upd_ca_trust.yml b/roles/etcd/tasks/upd_ca_trust.yml
index 81ce1e5739ae9c6c333afaf7bfc69b681a4226fa..dd36554fb95a3fcc643cf51823f96919b2373a2e 100644
--- a/roles/etcd/tasks/upd_ca_trust.yml
+++ b/roles/etcd/tasks/upd_ca_trust.yml
@@ -9,7 +9,8 @@
       {%- elif ansible_os_family in ["CoreOS", "Container Linux by CoreOS"] -%}
       /etc/ssl/certs/etcd-ca.pem
       {%- endif %}
-  tags: facts
+  tags:
+    - facts
 
 - name: Gen_certs | add CA to trusted CA dir
   copy:
diff --git a/roles/kubernetes-apps/ansible/tasks/main.yml b/roles/kubernetes-apps/ansible/tasks/main.yml
index 9e9a30382ecd33585123dbcaecd43bd409a3e110..57f98ed866c26a0e1559e801097440294be5e239 100644
--- a/roles/kubernetes-apps/ansible/tasks/main.yml
+++ b/roles/kubernetes-apps/ansible/tasks/main.yml
@@ -16,7 +16,8 @@
     resource: "{{ item }}"
     state: absent
   with_items: ['deploy', 'svc']
-  tags: upgrade
+  tags:
+    - upgrade
 
 - name: Kubernetes Apps | Delete kubeadm kubedns
   kube:
@@ -46,7 +47,8 @@
   when:
     - dns_mode != 'none' and inventory_hostname == groups['kube-master'][0]
     - rbac_enabled or item.type not in rbac_resources
-  tags: dnsmasq
+  tags:
+    - dnsmasq
 
 # see https://github.com/kubernetes/kubernetes/issues/45084, only needed for "old" kube-dns
 - name: Kubernetes Apps | Patch system:kube-dns ClusterRole
@@ -64,7 +66,8 @@
   when:
     - dns_mode != 'none' and inventory_hostname == groups['kube-master'][0]
     - rbac_enabled and kubedns_version|version_compare("1.11.0", "<", strict=True)
-  tags: dnsmasq
+  tags:
+    - dnsmasq
 
 - name: Kubernetes Apps | Start Resources
   kube:
@@ -79,14 +82,17 @@
     - dns_mode != 'none'
     - inventory_hostname == groups['kube-master'][0]
     - not item|skipped
-  tags: dnsmasq
+  tags:
+    - dnsmasq
 
 - name: Kubernetes Apps | Netchecker
   include: tasks/netchecker.yml
   when: deploy_netchecker
-  tags: netchecker
+  tags:
+    - netchecker
 
 - name: Kubernetes Apps | Dashboard
   include: tasks/dashboard.yml
   when: dashboard_enabled
-  tags: dashboard
+  tags:
+    - dashboard
diff --git a/roles/kubernetes-apps/ansible/tasks/netchecker.yml b/roles/kubernetes-apps/ansible/tasks/netchecker.yml
index 3b9168c031322d694a0171ec89272092b4479ff5..c07f07bba3711a3859f02ecfce037c7e1cfb2fc4 100644
--- a/roles/kubernetes-apps/ansible/tasks/netchecker.yml
+++ b/roles/kubernetes-apps/ansible/tasks/netchecker.yml
@@ -4,7 +4,9 @@
   stat:
     path: "{{ kube_config_dir }}/netchecker-server-deployment.yml.j2"
   register: netchecker_server_manifest
-  tags: ['facts', 'upgrade']
+  tags:
+    - facts
+    - upgrade
 
 - name: Kubernetes Apps | Apply netchecker-server manifest to update annotations
   kube:
@@ -15,7 +17,8 @@
     resource: "deploy"
     state: latest
   when: inventory_hostname == groups['kube-master'][0] and netchecker_server_manifest.stat.exists
-  tags: upgrade
+  tags:
+    - upgrade
 
 - name: Kubernetes Apps | Lay Down Netchecker Template
   template:
diff --git a/roles/kubernetes-apps/meta/main.yml b/roles/kubernetes-apps/meta/main.yml
index 9652e1a9602dd0e001806a9f6c739216e65fa9a6..893f79424973fba2a99e94be3aa67702e115c313 100644
--- a/roles/kubernetes-apps/meta/main.yml
+++ b/roles/kubernetes-apps/meta/main.yml
@@ -3,16 +3,34 @@ dependencies:
   - role: download
     file: "{{ downloads.netcheck_server }}"
     when: deploy_netchecker
-    tags: [download, netchecker]
+    tags:
+      - download
+      - netchecker
+
   - role: download
     file: "{{ downloads.netcheck_agent }}"
     when: deploy_netchecker
-    tags: [download, netchecker]
-  - {role: kubernetes-apps/ansible, tags: apps}
-  - {role: kubernetes-apps/kpm, tags: [apps, kpm]}
+    tags:
+      - download
+      - netchecker
+
+  - role: kubernetes-apps/ansible
+    tags:
+      - apps
+
+  - role: kubernetes-apps/kpm
+    tags:
+      - apps
+      - kpm
+
   - role: kubernetes-apps/efk
     when: efk_enabled
-    tags: [ apps, efk ]
+    tags:
+      - apps
+      - efk
+
   - role: kubernetes-apps/helm
     when: helm_enabled
-    tags: [ apps, helm ]
+    tags:
+      - apps
+      - helm
diff --git a/roles/kubernetes-apps/network_plugin/meta/main.yml b/roles/kubernetes-apps/network_plugin/meta/main.yml
index 4df295ea4c4db341ca7c55952e6f94f40d28287a..7c7b5a85b3ad0a66b2fb63bdcf5374ea8c771435 100644
--- a/roles/kubernetes-apps/network_plugin/meta/main.yml
+++ b/roles/kubernetes-apps/network_plugin/meta/main.yml
@@ -2,13 +2,20 @@
 dependencies:
   - role: kubernetes-apps/network_plugin/calico
     when: kube_network_plugin == 'calico'
-    tags: calico
+    tags:
+      - calico
+
   - role: kubernetes-apps/network_plugin/canal
     when: kube_network_plugin == 'canal'
-    tags: canal
+    tags:
+      - canal
+
   - role: kubernetes-apps/network_plugin/flannel
     when: kube_network_plugin == 'flannel'
-    tags: flannel
+    tags:
+      - flannel
+
   - role: kubernetes-apps/network_plugin/weave
     when: kube_network_plugin == 'weave'
-    tags: weave
+    tags:
+      - weave
diff --git a/roles/kubernetes-apps/policy_controller/calico/tasks/main.yml b/roles/kubernetes-apps/policy_controller/calico/tasks/main.yml
index a6b1e18c1d728e7d52822d4e2462b775ac613610..9a7225186db0750a5249e4c40c4b72ca728c88a0 100644
--- a/roles/kubernetes-apps/policy_controller/calico/tasks/main.yml
+++ b/roles/kubernetes-apps/policy_controller/calico/tasks/main.yml
@@ -3,7 +3,9 @@
   set_fact:
     calico_cert_dir: "{{ canal_cert_dir }}"
   when: kube_network_plugin == 'canal'
-  tags: [facts, canal]
+  tags:
+    - facts
+    - canal
 
 - name: Get calico-policy-controller version if running
   shell: "{{ bin_dir }}/kubectl -n {{ system_namespace }} get rs calico-policy-controller -o=jsonpath='{$.spec.template.spec.containers[:1].image}' | cut -d':' -f2"
diff --git a/roles/kubernetes-apps/policy_controller/meta/main.yml b/roles/kubernetes-apps/policy_controller/meta/main.yml
index e678a318c18b355109ad050a8141a0ef6ebcba77..10838db0bca3a883555a96ff2eba4dd117b82d56 100644
--- a/roles/kubernetes-apps/policy_controller/meta/main.yml
+++ b/roles/kubernetes-apps/policy_controller/meta/main.yml
@@ -2,13 +2,23 @@
 dependencies:
   - role: download
     file: "{{ downloads.calico_policy }}"
-    when: enable_network_policy and
-      kube_network_plugin in ['calico', 'canal']
-    tags: [download, canal, policy-controller]
+    when:
+      - enable_network_policy
+      - kube_network_plugin in ['calico', 'canal']
+    tags:
+      - download
+      - canal
+      - policy-controller
+
   - role: policy_controller/calico
-    when: kube_network_plugin == 'calico' and
-      enable_network_policy
-    tags: policy-controller
+    when:
+      - kube_network_plugin == 'calico'
+      - enable_network_policy
+    tags:
+      - policy-controller
+
   - role: policy_controller/calico
-    when: kube_network_plugin == 'canal'
-    tags: policy-controller
+    when:
+      - kube_network_plugin == 'canal'
+    tags:
+      - policy-controller
diff --git a/roles/kubernetes/client/tasks/main.yml b/roles/kubernetes/client/tasks/main.yml
index 2aab0342cf4af129500d3e5a045bdb80bdb470e3..84f80610731636debb41024b1e9ed6f997731068 100644
--- a/roles/kubernetes/client/tasks/main.yml
+++ b/roles/kubernetes/client/tasks/main.yml
@@ -11,7 +11,8 @@
       {%- else -%}
       https://{{ first_kube_master }}:{{ kube_apiserver_port }}
       {%- endif -%}
-  tags: facts
+  tags:
+    - facts
 
 - name: Gather certs for admin kubeconfig
   slurp:
diff --git a/roles/kubernetes/kubeadm/tasks/main.yml b/roles/kubernetes/kubeadm/tasks/main.yml
index 3eae97a4c60343767efe0df1c734658abe7a5e8d..ad902b4f03258cca4c83c2ab3a7359fab40ab5b4 100644
--- a/roles/kubernetes/kubeadm/tasks/main.yml
+++ b/roles/kubernetes/kubeadm/tasks/main.yml
@@ -8,7 +8,8 @@
       {{ kube_apiserver_endpoint }}
       {%- endif %}
   when: not is_kube_master
-  tags: facts
+  tags:
+    - facts
 
 - name: Check if kubelet.conf exists
   stat:
diff --git a/roles/kubernetes/master/meta/main.yml b/roles/kubernetes/master/meta/main.yml
index 3ce33893939b043a53d3198cf6ea06fda579e073..204421fc527057ad98e17af9dcb1f0813c13218f 100644
--- a/roles/kubernetes/master/meta/main.yml
+++ b/roles/kubernetes/master/meta/main.yml
@@ -2,4 +2,6 @@
 dependencies:
   - role: download
     file: "{{ downloads.hyperkube }}"
-    tags: [download, hyperkube]
+    tags:
+      - download
+      - hyperkube
diff --git a/roles/kubernetes/master/tasks/kubeadm-setup.yml b/roles/kubernetes/master/tasks/kubeadm-setup.yml
index 6d892be34adae5f069676cf82cff867cf4ff53c7..86068c71cb521b5efde66c505c1ed16a54e8a930 100644
--- a/roles/kubernetes/master/tasks/kubeadm-setup.yml
+++ b/roles/kubernetes/master/tasks/kubeadm-setup.yml
@@ -48,7 +48,8 @@
       {%- if hostvars[host]['access_ip'] is defined %}{{ hostvars[host]['access_ip'] }}{% endif %}
       {{ hostvars[host]['ip'] | default(hostvars[host]['ansible_default_ipv4']['address']) }}
       {%- endfor %}
-  tags: facts
+  tags:
+    - facts
 
 - name: kubeadm | Copy etcd cert dir under k8s cert dir
   command: "cp -TR {{ etcd_cert_dir }} {{ kube_config_dir }}/ssl/etcd"
diff --git a/roles/kubernetes/master/tasks/main.yml b/roles/kubernetes/master/tasks/main.yml
index 822323e7f486fe6236156ed43ce9ff0c345e0bcd..6739443ebc1d72063adc1dd5eb1b621092723830 100644
--- a/roles/kubernetes/master/tasks/main.yml
+++ b/roles/kubernetes/master/tasks/main.yml
@@ -1,6 +1,7 @@
 ---
 - include: pre-upgrade.yml
-  tags: k8s-pre-upgrade
+  tags:
+    - k8s-pre-upgrade
 
 # upstream bug: https://github.com/kubernetes/kubeadm/issues/441
 - name: Disable kube_basic_auth until kubeadm/441 is fixed
@@ -18,12 +19,16 @@
   retries: 4
   delay: "{{ retry_stagger | random + 3 }}"
   changed_when: false
-  tags: [hyperkube, kubectl, upgrade]
+  tags:
+    - hyperkube
+    - kubectl
+    - upgrade
 
 - name: Install kubectl bash completion
   shell: "{{ bin_dir }}/kubectl completion bash >/etc/bash_completion.d/kubectl.sh"
   when: ansible_os_family in ["Debian","RedHat"]
-  tags: kubectl
+  tags:
+    - kubectl
 
 - name: Set kubectl bash completion file
   file:
@@ -32,7 +37,9 @@
     group: root
     mode: 0755
   when: ansible_os_family in ["Debian","RedHat"]
-  tags: [kubectl, upgrade]
+  tags:
+    - kubectl
+    - upgrade
 
 - task: Include kubeadm setup if enabled
   include: kubeadm-setup.yml
diff --git a/roles/kubernetes/master/tasks/static-pod-setup.yml b/roles/kubernetes/master/tasks/static-pod-setup.yml
index 1a431e9dcdae69d52316dfc3b74f04feb4c779bf..a68ffb1374b4487a9c868cfc4de342351e59ea97 100644
--- a/roles/kubernetes/master/tasks/static-pod-setup.yml
+++ b/roles/kubernetes/master/tasks/static-pod-setup.yml
@@ -4,7 +4,8 @@
     src: manifests/kube-apiserver.manifest.j2
     dest: "{{ kube_manifest_dir }}/kube-apiserver.manifest"
   notify: Master | wait for the apiserver to be running
-  tags: kube-apiserver
+  tags:
+    - kube-apiserver
 
 - meta: flush_handlers
 
@@ -13,7 +14,8 @@
     src: namespace.j2
     dest: "{{kube_config_dir}}/{{system_namespace}}-ns.yml"
   when: inventory_hostname == groups['kube-master'][0]
-  tags: apps
+  tags:
+    - apps
 
 - name: Check if kube system namespace exists
   command: "{{ bin_dir }}/kubectl get ns {{system_namespace}}"
@@ -21,7 +23,8 @@
   changed_when: False
   failed_when: False
   when: inventory_hostname == groups['kube-master'][0]
-  tags: apps
+  tags:
+    - apps
 
 - name: Create kube system namespace
   command: "{{ bin_dir }}/kubectl create -f {{kube_config_dir}}/{{system_namespace}}-ns.yml"
@@ -31,30 +34,35 @@
   until: create_system_ns.rc == 0
   changed_when: False
   when: inventory_hostname == groups['kube-master'][0] and kubesystem.rc != 0
-  tags: apps
+  tags:
+    - apps
 
 - name: Write kube-scheduler kubeconfig
   template:
     src: kube-scheduler-kubeconfig.yaml.j2
     dest: "{{ kube_config_dir }}/kube-scheduler-kubeconfig.yaml"
-  tags: kube-scheduler
+  tags:
+    - kube-scheduler
 
 - name: Write kube-scheduler manifest
   template:
     src: manifests/kube-scheduler.manifest.j2
     dest: "{{ kube_manifest_dir }}/kube-scheduler.manifest"
   notify: Master | wait for kube-scheduler
-  tags: kube-scheduler
+  tags:
+    - kube-scheduler
 
 - name: Write kube-controller-manager kubeconfig
   template:
     src: kube-controller-manager-kubeconfig.yaml.j2
     dest: "{{ kube_config_dir }}/kube-controller-manager-kubeconfig.yaml"
-  tags: kube-controller-manager
+  tags:
+    - kube-controller-manager
 
 - name: Write kube-controller-manager manifest
   template:
     src: manifests/kube-controller-manager.manifest.j2
     dest: "{{ kube_manifest_dir }}/kube-controller-manager.manifest"
   notify: Master | wait for kube-controller-manager
-  tags: kube-controller-manager
+  tags:
+    - kube-controller-manager
diff --git a/roles/kubernetes/node/meta/main.yml b/roles/kubernetes/node/meta/main.yml
index c1f472bfd7948b5f28008ced7b1118e3ccedf2d5..f62228856c36101a9bcaaa59b1dbdf4db72b9454 100644
--- a/roles/kubernetes/node/meta/main.yml
+++ b/roles/kubernetes/node/meta/main.yml
@@ -2,44 +2,90 @@
 dependencies:
   - role: download
     file: "{{ downloads.hyperkube }}"
-    tags: [download, hyperkube, kubelet, network, canal, calico, weave, kube-controller-manager, kube-scheduler, kube-apiserver, kube-proxy, kubectl]
+    tags:
+      - download
+      - hyperkube
+      - kubelet
+      - network
+      - canal
+      - calico
+      - weave
+      - kube-controller-manager
+      - kube-scheduler
+      - kube-apiserver
+      - kube-proxy
+      - kubectl
+
   - role: download
     file: "{{ downloads.pod_infra }}"
-    tags: [download, kubelet]
+    tags:
+      - download
+      - kubelet
+
   - role: download
     file: "{{ downloads.install_socat }}"
-    tags: [download, kubelet]
     when: ansible_os_family in ['CoreOS', 'Container Linux by CoreOS']
+    tags:
+      - download
+      - kubelet
+
   - role: download
     file: "{{ downloads.kubeadm }}"
-    tags: [download, kubelet, kubeadm]
     when: kubeadm_enabled
+    tags:
+      - download
+      - kubelet
+      - kubeadm
+
   - role: kubernetes/secrets
     when: not kubeadm_enabled
-    tags: k8s-secrets
+    tags:
+      - k8s-secrets
   - role: download
     file: "{{ downloads.nginx }}"
-    tags: [download, nginx]
+    tags:
+      - download
+      - nginx
+
   - role: download
     file: "{{ downloads.testbox }}"
-    tags: download
+    tags:
+      - download
+
   - role: download
     file: "{{ downloads.netcheck_server }}"
     when: deploy_netchecker
-    tags: [download, netchecker]
+    tags:
+      - download
+      - netchecker
+
   - role: download
     file: "{{ downloads.netcheck_agent }}"
     when: deploy_netchecker
-    tags: [download, netchecker]
+    tags:
+      - download
+      - netchecker
+
   - role: download
     file: "{{ downloads.kubedns }}"
-    tags: [download, dnsmasq]
+    tags:
+      - download
+      - dnsmasq
+
   - role: download
     file: "{{ downloads.dnsmasq_nanny }}"
-    tags: [download, dnsmasq]
+    tags:
+      - download
+      - dnsmasq
+
   - role: download
     file: "{{ downloads.dnsmasq_sidecar }}"
-    tags: [download, dnsmasq]
+    tags:
+      - download
+      - dnsmasq
+
   - role: download
     file: "{{ downloads.kubednsautoscaler }}"
-    tags: [download, dnsmasq]
+    tags:
+      - download
+      - dnsmasq
diff --git a/roles/kubernetes/node/tasks/install.yml b/roles/kubernetes/node/tasks/install.yml
index d4401c236f58e0c139725f4ce8f9a11b785fda0b..7f40e0d76cf4f7c83c7f064a626374de297529ac 100644
--- a/roles/kubernetes/node/tasks/install.yml
+++ b/roles/kubernetes/node/tasks/install.yml
@@ -11,19 +11,22 @@
       '/usr/share/ca-certificates',
       {% endif -%}
     ]"
-  tags: facts
+  tags:
+    - facts
 
 - name: Set kubelet deployment to host if kubeadm is enabled
   set_fact:
     kubelet_deployment_type: host
   when: kubeadm_enabled
-  tags: kubeadm
+  tags:
+    - kubeadm
 
 - name: install | Copy kubeadm binary from download dir
   command: rsync -piu "{{ local_release_dir }}/kubeadm" "{{ bin_dir }}/kubeadm"
   changed_when: false
   when: kubeadm_enabled
-  tags: kubeadm
+  tags:
+    - kubeadm
 
 - name: install | Set kubeadm binary permissions
   file:
@@ -31,7 +34,8 @@
     mode: "0755"
     state: file
   when: kubeadm_enabled
-  tags: kubeadm
+  tags:
+    - kubeadm
 
 - include: "install_{{ kubelet_deployment_type }}.yml"
 
diff --git a/roles/kubernetes/node/tasks/install_host.yml b/roles/kubernetes/node/tasks/install_host.yml
index 9f1523ffe9fe43a4f6d0ec52e87ac2bd74eff441..07c493f48083f158befb8f566a03d969a0ee29e4 100644
--- a/roles/kubernetes/node/tasks/install_host.yml
+++ b/roles/kubernetes/node/tasks/install_host.yml
@@ -6,7 +6,9 @@
   retries: 4
   delay: "{{ retry_stagger | random + 3 }}"
   changed_when: false
-  tags: [hyperkube, upgrade]
+  tags:
+    - hyperkube
+    - upgrade
   notify: restart kubelet
 
 - name: install | Copy socat wrapper for Container Linux
diff --git a/roles/kubernetes/node/tasks/main.yml b/roles/kubernetes/node/tasks/main.yml
index b12b2348ed4cea455ea154d78cc9325c978ba883..b2229cd5c5cfdf6253d4b818ce1711b2121ce99f 100644
--- a/roles/kubernetes/node/tasks/main.yml
+++ b/roles/kubernetes/node/tasks/main.yml
@@ -1,9 +1,11 @@
 ---
 - include: facts.yml
-  tags: facts
+  tags:
+    - facts
 
 - include: pre_upgrade.yml
-  tags: kubelet
+  tags:
+    - kubelet
 
 - name: Ensure /var/lib/cni exists
   file:
@@ -12,11 +14,13 @@
     mode: 0755
 
 - include: install.yml
-  tags: kubelet
+  tags:
+    - kubelet
 
 - include: nginx-proxy.yml
   when: is_kube_master == false and loadbalancer_apiserver_localhost|default(true)
-  tags: nginx
+  tags:
+    - nginx
 
 - name: Write kubelet config file (non-kubeadm)
   template:
@@ -25,7 +29,8 @@
     backup: yes
   when: not kubeadm_enabled
   notify: restart kubelet
-  tags: kubelet
+  tags:
+    - kubelet
 
 - name: Write kubelet config file (kubeadm)
   template:
@@ -34,7 +39,9 @@
     backup: yes
   when: kubeadm_enabled
   notify: restart kubelet
-  tags: ['kubelet', 'kubeadm']
+  tags:
+    - kubelet
+    - kubeadm
 
 - name: write the kubecfg (auth) file for kubelet
   template:
@@ -46,7 +53,8 @@
     - kube-proxy
   when: not kubeadm_enabled
   notify: restart kubelet
-  tags: kubelet
+  tags:
+    - kubelet
 
 - name: Ensure nodePort range is reserved
   sysctl:
@@ -56,7 +64,8 @@
     state: present
     reload: yes
   when: kube_apiserver_node_port_range is defined
-  tags: kube-proxy
+  tags:
+    - kube-proxy
 
 - name: Verify if br_netfilter module exists
   shell: "modinfo br_netfilter"
@@ -94,14 +103,16 @@
     src: manifests/kube-proxy.manifest.j2
     dest: "{{ kube_manifest_dir }}/kube-proxy.manifest"
   when: not kubeadm_enabled
-  tags: kube-proxy
+  tags:
+    - kube-proxy
 
 - name: Purge proxy manifest for kubeadm
   file:
     path: "{{ kube_manifest_dir }}/kube-proxy.manifest"
     state: absent
   when: kubeadm_enabled
-  tags: kube-proxy
+  tags:
+    - kube-proxy
 
 # reload-systemd
 - meta: flush_handlers
@@ -111,4 +122,5 @@
     name: kubelet
     enabled: yes
     state: started
-  tags: kubelet
+  tags:
+    - kubelet
diff --git a/roles/kubernetes/node/tasks/pre_upgrade.yml b/roles/kubernetes/node/tasks/pre_upgrade.yml
index d92b0580990b9e3d220ade594f1dd976c14a3135..ee4836974e35cc9a56f5a20ef0f8c75684c29807 100644
--- a/roles/kubernetes/node/tasks/pre_upgrade.yml
+++ b/roles/kubernetes/node/tasks/pre_upgrade.yml
@@ -8,4 +8,4 @@
 - name: "Pre-upgrade | ensure kubelet container is stopped if using host deployment"
   command: docker stop kubelet
   failed_when: false
-  when: kubelet_deployment_type == "host"
+  when: kubelet_deployment_type == 'host'
diff --git a/roles/kubernetes/preinstall/meta/main.yml b/roles/kubernetes/preinstall/meta/main.yml
index 203d968a7f7470439b6a5b2516aa96129a416120..7eeef4b25b56ab4daa0af086a03c7dd72e3f4452 100644
--- a/roles/kubernetes/preinstall/meta/main.yml
+++ b/roles/kubernetes/preinstall/meta/main.yml
@@ -2,5 +2,6 @@
 dependencies:
   - role: adduser
     user: "{{ addusers.kube }}"
-    tags: kubelet
-    when: not is_atomic
\ No newline at end of file
+    when: not is_atomic
+    tags:
+      - kubelet
\ No newline at end of file
diff --git a/roles/kubernetes/preinstall/tasks/main.yml b/roles/kubernetes/preinstall/tasks/main.yml
index 56b52b6c89b0c9aaea9c08ea501cd4e544375b93..6021dcf67b94cc10b7001f2ecfce2ecf1de05445 100644
--- a/roles/kubernetes/preinstall/tasks/main.yml
+++ b/roles/kubernetes/preinstall/tasks/main.yml
@@ -1,12 +1,14 @@
 ---
 - include: verify-settings.yml
-  tags: asserts
+  tags:
+    - asserts
 
 - name: Force binaries directory for Container Linux by CoreOS
   set_fact:
     bin_dir: "/opt/bin"
   when: ansible_os_family in ["CoreOS", "Container Linux by CoreOS"]
-  tags: facts
+  tags:
+    - facts
 
 - name: check bin dir exists
   file:
@@ -14,10 +16,12 @@
     state: directory
     owner: root
   become: true
-  tags: bootstrap-os
+  tags:
+    - bootstrap-os
 
 - include: set_facts.yml
-  tags: facts
+  tags:
+    - facts
 
 - name: gather os specific variables
   include_vars: "{{ item }}"
@@ -32,7 +36,8 @@
       paths:
         - ../vars
       skip: true
-  tags: facts
+  tags:
+    - facts
 
 - name: Create kubernetes directories
   file:
@@ -40,7 +45,16 @@
     state: directory
     owner: kube
   when: inventory_hostname in groups['k8s-cluster']
-  tags: [kubelet, k8s-secrets, kube-controller-manager, kube-apiserver, bootstrap-os, apps, network, master, node]
+  tags:
+    - kubelet
+    - k8s-secrets
+    - kube-controller-manager
+    - kube-apiserver
+    - bootstrap-os
+    - apps
+    - network
+    - master
+    - node
   with_items:
     - "{{ kube_config_dir }}"
     - "{{ kube_config_dir }}/ssl"
@@ -53,13 +67,17 @@
   when:
     - cloud_provider is defined
     - cloud_provider not in ['generic', 'gce', 'aws', 'azure', 'openstack', 'vsphere']
-  tags: [cloud-provider, facts]
+  tags:
+    - cloud-provider
+    - facts
 
 - include: "{{ cloud_provider }}-credential-check.yml"
   when:
     - cloud_provider is defined
     - cloud_provider in [ 'openstack', 'azure', 'vsphere' ]
-  tags: [cloud-provider, facts]
+  tags:
+    - cloud-provider
+    - facts
 
 - name: Create cni directories
   file:
@@ -72,7 +90,12 @@
   when:
     - kube_network_plugin in ["calico", "weave", "canal", "flannel"]
     - inventory_hostname in groups['k8s-cluster']
-  tags: [network, calico, weave, canal, bootstrap-os]
+  tags:
+    - network
+    - calico
+    - weave
+    - canal
+    - bootstrap-os
 
 - name: Update package management cache (YUM)
   yum:
@@ -85,7 +108,8 @@
   when:
     - ansible_pkg_mgr == 'yum'
     - not is_atomic
-  tags: bootstrap-os
+  tags:
+    - bootstrap-os
 
 - name: Install latest version of python-apt for Debian distribs
   apt:
@@ -94,7 +118,8 @@
     update_cache: yes
     cache_valid_time: 3600
   when: ansible_os_family == "Debian"
-  tags: bootstrap-os
+  tags:
+    - bootstrap-os
 
 - name: Install python-dnf for latest RedHat versions
   command: dnf install -y python-dnf yum
@@ -106,7 +131,8 @@
     - ansible_distribution == "Fedora"
     - ansible_distribution_major_version > 21
   changed_when: False
-  tags: bootstrap-os
+  tags:
+    - bootstrap-os
 
 - name: Install epel-release on RedHat/CentOS
   shell: rpm -qa | grep epel-release || rpm -ivh {{ epel_rpm_download_url }}
@@ -121,7 +147,8 @@
   delay: "{{ retry_stagger | random + 3 }}"
   changed_when: False
   check_mode: no
-  tags: bootstrap-os
+  tags:
+    - bootstrap-os
 
 - name: Install packages requirements
   action:
@@ -134,7 +161,8 @@
   delay: "{{ retry_stagger | random + 3 }}"
   with_items: "{{required_pkgs | default([]) | union(common_required_pkgs|default([]))}}"
   when: not (ansible_os_family in ["CoreOS", "Container Linux by CoreOS"] or is_atomic)
-  tags: bootstrap-os
+  tags:
+    - bootstrap-os
 
 # Todo : selinux configuration
 - name: Confirm selinux deployed
@@ -151,7 +179,8 @@
     - ansible_os_family == "RedHat"
     - slc.stat.exists == True
   changed_when: False
-  tags: bootstrap-os
+  tags:
+    - bootstrap-os
 
 - name: Disable IPv6 DNS lookup
   lineinfile:
@@ -162,18 +191,21 @@
   when:
     - disable_ipv6_dns
     - not ansible_os_family in ["CoreOS", "Container Linux by CoreOS"]
-  tags: bootstrap-os
+  tags:
+    - bootstrap-os
 
 - name: set default sysctl file path
   set_fact:
     sysctl_file_path: "/etc/sysctl.d/99-sysctl.conf"
-  tags: bootstrap-os
+  tags:
+    - bootstrap-os
 
 - name: Stat sysctl file configuration
   stat:
     path: "{{sysctl_file_path}}"
   register: sysctl_file_stat
-  tags: bootstrap-os
+  tags:
+    - bootstrap-os
 
 - name: Change sysctl file path to link source if linked
   set_fact:
@@ -181,7 +213,8 @@
   when:
     - sysctl_file_stat.stat.islnk is defined
     - sysctl_file_stat.stat.islnk
-  tags: bootstrap-os
+  tags:
+    - bootstrap-os
 
 - name: Enable ip forwarding
   sysctl:
@@ -189,7 +222,8 @@
     name: net.ipv4.ip_forward
     value: 1
     state: present
-  tags: bootstrap-os
+  tags:
+    - bootstrap-os
 
 - name: Write cloud-config
   template:
@@ -201,39 +235,50 @@
     - inventory_hostname in groups['k8s-cluster']
     - cloud_provider is defined
     - cloud_provider in [ 'openstack', 'azure', 'vsphere' ]
-  tags: [cloud-provider]
+  tags:
+    - cloud-provider
 
 - include: etchosts.yml
-  tags: [bootstrap-os, etchosts]
+  tags:
+    - bootstrap-os
+    - etchosts
 
 - include: resolvconf.yml
   when:
     - dns_mode != 'none'
     - resolvconf_mode == 'host_resolvconf'
-  tags: [bootstrap-os, resolvconf]
+  tags:
+    - bootstrap-os
+    - resolvconf
 
 - include: dhclient-hooks.yml
   when:
     - dns_mode != 'none'
     - resolvconf_mode == 'host_resolvconf'
     - not ansible_os_family in ["CoreOS", "Container Linux by CoreOS"]
-  tags: [bootstrap-os, resolvconf]
+  tags:
+    - bootstrap-os
+    - resolvconf
 
 - include: dhclient-hooks-undo.yml
   when:
     - dns_mode != 'none'
     - resolvconf_mode != 'host_resolvconf'
     - not ansible_os_family in ["CoreOS", "Container Linux by CoreOS"]
-  tags: [bootstrap-os, resolvconf]
+  tags:
+    - bootstrap-os
+    - resolvconf
 
 - name: Check if we are running inside a Azure VM
   stat:
     path: /var/lib/waagent/
   register: azure_check
-  tags: bootstrap-os
+  tags:
+    - bootstrap-os
 
 - include: growpart-azure-centos-7.yml
   when:
     - azure_check.stat.exists
     - ansible_distribution in ["CentOS","RedHat"]
-  tags: bootstrap-os
+  tags:
+    - bootstrap-os
diff --git a/roles/kubernetes/preinstall/tasks/set_facts.yml b/roles/kubernetes/preinstall/tasks/set_facts.yml
index 073033315d36f8f580e22e2d30195928b35ae437..b5311bac862bffd979f9bfeb15243c70237c3d73 100644
--- a/roles/kubernetes/preinstall/tasks/set_facts.yml
+++ b/roles/kubernetes/preinstall/tasks/set_facts.yml
@@ -12,4 +12,7 @@
   when: is_atomic
 
 - include: set_resolv_facts.yml
-  tags: [bootstrap-os, resolvconf, facts]
+  tags:
+    - bootstrap-os
+    - resolvconf
+    - facts
diff --git a/roles/kubernetes/secrets/tasks/gen_certs_script.yml b/roles/kubernetes/secrets/tasks/gen_certs_script.yml
index 7ad280e60896a9fc72a508af27ce6b3673eafd07..619bbe44595762cb39a097d14a897432e83c74b3 100644
--- a/roles/kubernetes/secrets/tasks/gen_certs_script.yml
+++ b/roles/kubernetes/secrets/tasks/gen_certs_script.yml
@@ -6,8 +6,17 @@
     owner: kube
   run_once: yes
   delegate_to: "{{groups['kube-master'][0]}}"
-  tags: [kubelet, k8s-secrets, kube-controller-manager, kube-apiserver, bootstrap-os, apps, network, master, node]
   when: gen_certs|default(false)
+  tags:
+    - kubelet
+    - k8s-secrets
+    - kube-controller-manager
+    - kube-apiserver
+    - bootstrap-os
+    - apps
+    - network
+    - master
+    - node
 
 - name: "Gen_certs | Create kubernetes script directory (on {{groups['kube-master'][0]}})"
   file:
@@ -16,8 +25,10 @@
     owner: kube
   run_once: yes
   delegate_to: "{{groups['kube-master'][0]}}"
-  tags: [k8s-secrets, bootstrap-os]
   when: gen_certs|default(false)
+  tags:
+    - k8s-secrets
+    - bootstrap-os
 
 - name: Gen_certs | write openssl config
   template:
@@ -87,7 +98,8 @@
                     'node-{{ inventory_hostname }}-key.pem',
                     'kube-proxy-{{ inventory_hostname }}.pem',
                     'kube-proxy-{{ inventory_hostname }}-key.pem']
-  tags: facts
+  tags:
+    - facts
 
 - name: Gen_certs | Gather master certs
   shell: "tar cfz - -C {{ kube_cert_dir }} -T /dev/stdin <<< {{ my_master_certs|join(' ') }} {{ all_node_certs|join(' ') }} | base64 --wrap=0"
diff --git a/roles/kubernetes/secrets/tasks/main.yml b/roles/kubernetes/secrets/tasks/main.yml
index f45b892aaf3bc9c150f4893c72f1550aba1db6b9..55403ed169e1eea7b7a9776a81e8414a2fe9e2fd 100644
--- a/roles/kubernetes/secrets/tasks/main.yml
+++ b/roles/kubernetes/secrets/tasks/main.yml
@@ -1,9 +1,13 @@
 ---
 - include: check-certs.yml
-  tags: [k8s-secrets, facts]
+  tags:
+    - k8s-secrets
+    - facts
 
 - include: check-tokens.yml
-  tags: [k8s-secrets, facts]
+  tags:
+    - k8s-secrets
+    - facts
 
 - name: Make sure the certificate directory exits
   file:
@@ -31,8 +35,17 @@
     owner: kube
   run_once: yes
   delegate_to: "{{groups['kube-master'][0]}}"
-  tags: [kubelet, k8s-secrets, kube-controller-manager, kube-apiserver, bootstrap-os, apps, network, master, node]
   when: gen_certs|default(false) or gen_tokens|default(false)
+  tags:
+    - kubelet
+    - k8s-secrets
+    - kube-controller-manager
+    - kube-apiserver
+    - bootstrap-os
+    - apps
+    - network
+    - master
+    - node
 
 - name: "Gen_certs | Create kubernetes script directory (on {{groups['kube-master'][0]}})"
   file:
@@ -41,8 +54,10 @@
     owner: kube
   run_once: yes
   delegate_to: "{{groups['kube-master'][0]}}"
-  tags: [k8s-secrets, bootstrap-os]
   when: gen_certs|default(false) or gen_tokens|default(false)
+  tags:
+    - k8s-secrets
+    - bootstrap-os
 
 - name: "Get_tokens | Make sure the tokens directory exits (on {{groups['kube-master'][0]}})"
   file:
@@ -55,10 +70,12 @@
   when: gen_tokens|default(false)
 
 - include: "gen_certs_{{ cert_management }}.yml"
-  tags: k8s-secrets
+  tags:
+    - k8s-secrets
 
 - include: upd_ca_trust.yml
-  tags: k8s-secrets
+  tags:
+    - k8s-secrets
 
 - name: "Gen_certs | Get certificate serials on kube masters"
   shell: "openssl x509 -in {{ kube_cert_dir }}/{{ item }} -noout -serial | cut -d= -f2"
@@ -93,4 +110,5 @@
   when: inventory_hostname in groups['k8s-cluster']
 
 - include: gen_tokens.yml
-  tags: k8s-secrets
+  tags:
+    - k8s-secrets
diff --git a/roles/kubernetes/secrets/tasks/upd_ca_trust.yml b/roles/kubernetes/secrets/tasks/upd_ca_trust.yml
index c980bb6aa3c526ba1a1eda65e1970b9f4ba8a066..eec44987f5109ce6d7de88deb7f0748fe4298ffa 100644
--- a/roles/kubernetes/secrets/tasks/upd_ca_trust.yml
+++ b/roles/kubernetes/secrets/tasks/upd_ca_trust.yml
@@ -9,7 +9,8 @@
       {%- elif ansible_os_family in ["CoreOS", "Container Linux by CoreOS"] -%}
       /etc/ssl/certs/kube-ca.pem
       {%- endif %}
-  tags: facts
+  tags:
+    - facts
 
 - name: Gen_certs | add CA to trusted CA dir
   copy:
diff --git a/roles/network_plugin/calico/meta/main.yml b/roles/network_plugin/calico/meta/main.yml
index fdd4e84836a811d506324ebb6e67b16c190bbcd2..d8d1a6d4c94b5c4284fd648fe453d567d8d907e4 100644
--- a/roles/network_plugin/calico/meta/main.yml
+++ b/roles/network_plugin/calico/meta/main.yml
@@ -2,13 +2,20 @@
 dependencies:
   - role: download
     file: "{{ downloads.calico_cni }}"
-    tags: download
+    tags:
+      - download
+
   - role: download
     file: "{{ downloads.calico_node }}"
-    tags: download
+    tags:
+      - download
+
   - role: download
     file: "{{ downloads.calicoctl }}"
-    tags: download
+    tags:
+      - download
+
   - role: download
     file: "{{ downloads.hyperkube }}"
-    tags: download
+    tags:
+      - download
diff --git a/roles/network_plugin/calico/tasks/main.yml b/roles/network_plugin/calico/tasks/main.yml
index aef22edb303a959099a464eb69004c61f8fefb69..c4cb60a7af4c3e7b859594efcb723cbe392528eb 100644
--- a/roles/network_plugin/calico/tasks/main.yml
+++ b/roles/network_plugin/calico/tasks/main.yml
@@ -54,7 +54,9 @@
   retries: 4
   delay: "{{ retry_stagger | random + 3 }}"
   changed_when: false
-  tags: [hyperkube, upgrade]
+  tags:
+    - hyperkube
+    - upgrade
 
 - name: Calico | Copy cni plugins from calico/cni container
   command: "{{ docker_bin_dir }}/docker run --rm -v /opt/cni/bin:/cnibindir {{ calico_cni_image_repo }}:{{ calico_cni_image_tag }} sh -c 'cp -a /opt/cni/bin/* /cnibindir/'"
@@ -64,7 +66,9 @@
   delay: "{{ retry_stagger | random + 3 }}"
   changed_when: false
   when: overwrite_hyperkube_cni|bool
-  tags: [hyperkube, upgrade]
+  tags:
+    - hyperkube
+    - upgrade
 
 - name: Calico | Set cni directory permissions
   file:
diff --git a/roles/network_plugin/canal/meta/main.yml b/roles/network_plugin/canal/meta/main.yml
index 3d67dad5ccd80d97db250df7625056ee57905b85..8bbc3cb6e1d0be71c6711cea8cf932e9b93578b7 100644
--- a/roles/network_plugin/canal/meta/main.yml
+++ b/roles/network_plugin/canal/meta/main.yml
@@ -2,16 +2,25 @@
 dependencies:
   - role: download
     file: "{{ downloads.flannel }}"
-    tags: download
+    tags:
+      - download
+
   - role: download
     file: "{{ downloads.calico_node }}"
-    tags: download
+    tags:
+      - download
+
   - role: download
     file: "{{ downloads.calicoctl }}"
-    tags: download
+    tags:
+      - download
+
   - role: download
     file: "{{ downloads.calico_cni }}"
-    tags: download
+    tags:
+      - download
+
   - role: download
     file: "{{ downloads.calico_policy }}"
-    tags: download
+    tags:
+      - download
diff --git a/roles/network_plugin/canal/tasks/main.yml b/roles/network_plugin/canal/tasks/main.yml
index 2cc1a8ffe081c091659f85d7a6ce3967859a37fc..b9d7cdfe99be685fd0a15166683dfef562a10fd5 100644
--- a/roles/network_plugin/canal/tasks/main.yml
+++ b/roles/network_plugin/canal/tasks/main.yml
@@ -56,7 +56,9 @@
   retries: 4
   delay: "{{ retry_stagger | random + 3 }}"
   changed_when: false
-  tags: [hyperkube, upgrade]
+  tags:
+    - hyperkube
+    - upgrade
 
 - name: Canal | Copy cni plugins from calico/cni
   command: "{{ docker_bin_dir }}/docker run --rm -v /opt/cni/bin:/cnibindir {{ calico_cni_image_repo }}:{{ calico_cni_image_tag }} sh -c 'cp -a /opt/cni/bin/* /cnibindir/'"
@@ -65,7 +67,9 @@
   retries: 4
   delay: "{{ retry_stagger | random + 3 }}"
   changed_when: false
-  tags: [hyperkube, upgrade]
+  tags:
+    - hyperkube
+    - upgrade
 
 - name: Canal | Set cni directory permissions
   file:
diff --git a/roles/network_plugin/flannel/meta/main.yml b/roles/network_plugin/flannel/meta/main.yml
index 791209357e0c344878c6d7293024300fe8e1c64a..7ee3ba96fb0d2e4dd8c5b45a9904fb836c0eecba 100644
--- a/roles/network_plugin/flannel/meta/main.yml
+++ b/roles/network_plugin/flannel/meta/main.yml
@@ -2,7 +2,10 @@
 dependencies:
   - role: download
     file: "{{ downloads.flannel }}"
-    tags: download
+    tags:
+      - download
+
   - role: download
     file: "{{ downloads.flannel_cni }}"
-    tags: download
+    tags:
+      - download
diff --git a/roles/network_plugin/meta/main.yml b/roles/network_plugin/meta/main.yml
index d9834a3cd95c76eb4d9f9696cfd81744012556f7..5a54647e2154270d9aebb2ac3216004917cdec10 100644
--- a/roles/network_plugin/meta/main.yml
+++ b/roles/network_plugin/meta/main.yml
@@ -2,15 +2,23 @@
 dependencies:
   - role: network_plugin/calico
     when: kube_network_plugin == 'calico'
-    tags: calico
+    tags:
+      - calico
+
   - role: network_plugin/flannel
     when: kube_network_plugin == 'flannel'
-    tags: flannel
+    tags:
+      - flannel
+
   - role: network_plugin/weave
     when: kube_network_plugin == 'weave'
-    tags: weave
+    tags:
+      - weave
+
   - role: network_plugin/canal
     when: kube_network_plugin == 'canal'
-    tags: canal
+    tags:
+      - canal
+
   - role: network_plugin/cloud
     when: kube_network_plugin == 'cloud'
diff --git a/roles/network_plugin/weave/meta/main.yml b/roles/network_plugin/weave/meta/main.yml
index 37bcd9404a3a40d21d362e4956c6513c86d2e932..a0e93bc364e2c52a16e98727945773606b7c1ad3 100644
--- a/roles/network_plugin/weave/meta/main.yml
+++ b/roles/network_plugin/weave/meta/main.yml
@@ -2,7 +2,10 @@
 dependencies:
   - role: download
     file: "{{ downloads.weave_kube }}"
-    tags: download
+    tags:
+      - download
+
   - role: download
     file: "{{ downloads.weave_npc }}"
-    tags: download
+    tags:
+      - download
diff --git a/roles/network_plugin/weave/tasks/main.yml b/roles/network_plugin/weave/tasks/main.yml
index 462278e94cc58ff4133cab30990718f081ce92ca..30c209f8b02af80148fcf674007fbbac98dda433 100644
--- a/roles/network_plugin/weave/tasks/main.yml
+++ b/roles/network_plugin/weave/tasks/main.yml
@@ -9,7 +9,9 @@
   retries: 4
   delay: "{{ retry_stagger | random + 3 }}"
   changed_when: false
-  tags: [hyperkube, upgrade]
+  tags:
+    - hyperkube
+    - upgrade
 
 - name: Weave | Create weave-net manifest
   template:
diff --git a/roles/network_plugin/weave/tasks/seed.yml b/roles/network_plugin/weave/tasks/seed.yml
index be2ef677d2001332323f870a080f1eaaf3fc60db..1bca07cd3765ac313e10a96fe012e282ccfb1e90 100644
--- a/roles/network_plugin/weave/tasks/seed.yml
+++ b/roles/network_plugin/weave/tasks/seed.yml
@@ -4,28 +4,32 @@
     seed: '{% for host in groups["k8s-cluster"] %}{{ hostvars[host]["ansible_default_ipv4"]["macaddress"] }}{% if not loop.last %},{% endif %}{% endfor %}'
   when: "weave_seed == 'uninitialized'"
   run_once: true
-  tags: confweave
+  tags:
+    - confweave
 
 - name: Weave seed | Set seed if not first time
   set_fact:
     seed: '{{ weave_seed }}'
   when: "weave_seed != 'uninitialized'"
   run_once: true
-  tags: confweave
+  tags:
+    - confweave
 
 - name: Weave seed | Set peers if fist time
   set_fact:
     peers: '{{ weave_ip_current_cluster }}'
   when: "weave_peers == 'uninitialized'"
   run_once: true
-  tags: confweave
+  tags:
+    - confweave
 
 - name: Weave seed | Set peers if existing peers
   set_fact:
     peers: '{{ weave_peers }}{% for ip in weave_ip_current_cluster.split(" ") %}{% if ip not in weave_peers.split(" ") %} {{ ip }}{% endif %}{% endfor %}'
   when: "weave_peers != 'uninitialized'"
   run_once: true
-  tags: confweave
+  tags:
+    - confweave
 
 - name: Weave seed | Save seed
   lineinfile:
@@ -36,7 +40,8 @@
   become: no
   delegate_to: 127.0.0.1
   run_once: true
-  tags: confweave
+  tags:
+    - confweave
 
 - name: Weave seed | Save peers
   lineinfile:
@@ -47,4 +52,5 @@
   become: no
   delegate_to: 127.0.0.1
   run_once: true
-  tags: confweave
\ No newline at end of file
+  tags:
+    - confweave
\ No newline at end of file
diff --git a/roles/reset/tasks/main.yml b/roles/reset/tasks/main.yml
index 6ad4aa72517039c53c9e6da38ad661c93a0ac864..77adf12051699dd25422aa1e9cb762916b4c8585 100644
--- a/roles/reset/tasks/main.yml
+++ b/roles/reset/tasks/main.yml
@@ -9,7 +9,8 @@
     - vault
     - etcd
   failed_when: false
-  tags: ['services']
+  tags:
+    - services
 
 - name: reset | remove services
   file:
@@ -21,7 +22,8 @@
     - vault
     - calico-node
   register: services_removed
-  tags: ['services']
+  tags:
+    - services
 
 - name: reset | remove docker dropins
   file:
@@ -31,7 +33,8 @@
     - docker-dns.conf
     - docker-options.conf
   register: docker_dropins_removed
-  tags: ['docker']
+  tags:
+    - docker
 
 - name: reset | systemctl daemon-reload
   command: systemctl daemon-reload
@@ -43,31 +46,36 @@
   retries: 4
   until: remove_all_containers.rc == 0
   delay: 5
-  tags: ['docker']
+  tags:
+    - docker
 
 - name: reset | restart docker if needed
   service:
     name: docker
     state: restarted
   when: docker_dropins_removed.changed
-  tags: ['docker']
+  tags:
+    - docker
 
 - name: reset | gather mounted kubelet dirs
   shell: mount | grep /var/lib/kubelet | awk '{print $3}' | tac
   check_mode: no
   register: mounted_dirs
-  tags: ['mounts']
+  tags:
+    - mounts
 
 - name: reset | unmount kubelet dirs
   command: umount {{item}}
   with_items: '{{ mounted_dirs.stdout_lines }}'
-  tags: ['mounts']
+  tags:
+    - mounts
 
 - name: flush iptables
   iptables:
     flush: yes
   when: flush_iptables|bool
-  tags: ['iptables']
+  tags:
+    - iptables
 
 - name: reset | delete some files and directories
   file:
@@ -115,7 +123,8 @@
     - "{{ bin_dir }}/helm"
     - "{{ bin_dir }}/calicoctl"
     - "{{ bin_dir }}/weave"
-  tags: ['files']
+  tags:
+    - files
 
 - name: reset | remove dns settings from dhclient.conf
   blockinfile:
@@ -127,7 +136,9 @@
   with_items:
     - /etc/dhclient.conf
     - /etc/dhcp/dhclient.conf
-  tags: ['files', 'dns']
+  tags:
+    - files
+    - dns
 
 - name: reset | remove host entries from /etc/hosts
   blockinfile:
@@ -135,7 +146,9 @@
     state: absent
     follow: yes
     marker: "# Ansible inventory hosts {mark}"
-  tags: ['files', 'dns']
+  tags:
+    - files
+    - dns
 
 - name: reset | Restart network
   service:
@@ -147,4 +160,6 @@
       {%- endif %}
     state: restarted
   when: ansible_os_family not in ["CoreOS", "Container Linux by CoreOS"]
-  tags: ['services', 'network']
+  tags:
+    - services
+    - network
diff --git a/roles/rkt/tasks/install.yml b/roles/rkt/tasks/install.yml
index 0cc8f8898f936fd87632eb778127a1d862e989df..599f9e50e2b1d5e3c3cd22c7b73b29560a2c924b 100644
--- a/roles/rkt/tasks/install.yml
+++ b/roles/rkt/tasks/install.yml
@@ -12,7 +12,8 @@
       paths:
         - ../vars
       skip: true
-  tags: facts
+  tags:
+    - facts
 
 - name: install rkt pkg on ubuntu
   apt:
diff --git a/roles/vault/meta/main.yml b/roles/vault/meta/main.yml
index ba559e361d357751186d56cad13587b0e1a5c828..f8e993bcb692c75fd4bd3eb9975d2d05f6d63edd 100644
--- a/roles/vault/meta/main.yml
+++ b/roles/vault/meta/main.yml
@@ -3,6 +3,8 @@
 dependencies:
   - role: adduser
     user: "{{ vault_adduser_vars }}"
+
   - role: download
     file: "{{ vault_download_vars }}"
-    tags: download
+    tags:
+      - download