--- - name: Local Volume Provisioner | Ensure base dir is created on all hosts include_tasks: basedirs.yml loop_control: loop_var: delegate_host_base_dir loop: "{{ groups['k8s-cluster'] | product(local_volume_provisioner_storage_classes.keys()) | list }}" - name: Local Volume Provisioner | Create addon dir file: path: "{{ kube_config_dir }}/addons/local_volume_provisioner" state: directory owner: root group: root mode: 0755 - name: Local Volume Provisioner | Templates list set_fact: local_volume_provisioner_templates: - { name: local-volume-provisioner-ns, file: local-volume-provisioner-ns.yml, type: ns } - { name: local-volume-provisioner-sa, file: local-volume-provisioner-sa.yml, type: sa } - { name: local-volume-provisioner-clusterrole, file: local-volume-provisioner-clusterrole.yml, type: clusterrole } - { name: local-volume-provisioner-clusterrolebinding, file: local-volume-provisioner-clusterrolebinding.yml, type: clusterrolebinding } - { name: local-volume-provisioner-cm, file: local-volume-provisioner-cm.yml, type: cm } - { name: local-volume-provisioner-ds, file: local-volume-provisioner-ds.yml, type: ds } - { name: local-volume-provisioner-sc, file: local-volume-provisioner-sc.yml, type: sc } local_volume_provisioner_templates_for_psp_not_system_ns: - { name: local-volume-provisioner-psp, file: local-volume-provisioner-psp.yml, type: psp } - { name: local-volume-provisioner-psp-role, file: local-volume-provisioner-psp-role.yml, type: role } - { name: local-volume-provisioner-psp-rb, file: local-volume-provisioner-psp-rb.yml, type: rolebinding } - name: Local Volume Provisioner | Insert extra templates to Local Volume Provisioner templates list for PodSecurityPolicy set_fact: local_volume_provisioner_templates: "{{ local_volume_provisioner_templates[:2] + local_volume_provisioner_templates_for_psp_not_system_ns + local_volume_provisioner_templates[2:] }}" when: - podsecuritypolicy_enabled - local_volume_provisioner_namespace != "kube-system" - name: Local Volume Provisioner | Create manifests template: src: "{{ item.file }}.j2" dest: "{{ kube_config_dir }}/addons/local_volume_provisioner/{{ item.file }}" with_items: "{{ local_volume_provisioner_templates }}" register: local_volume_provisioner_manifests when: inventory_hostname == groups['kube_control_plane'][0] - name: Local Volume Provisioner | Apply manifests kube: name: "{{ item.item.name }}" namespace: "{{ local_volume_provisioner_namespace }}" kubectl: "{{ bin_dir }}/kubectl" resource: "{{ item.item.type }}" filename: "{{ kube_config_dir }}/addons/local_volume_provisioner/{{ item.item.file }}" state: "latest" with_items: "{{ local_volume_provisioner_manifests.results }}" when: inventory_hostname == groups['kube_control_plane'][0] loop_control: label: "{{ item.item.file }}"