--- - name: create base directory for zfs-localpv addon file: path: /etc/kubernetes/addons/zfs-localpv state: directory - name: copy config for zfs-localpv template: src: "zfs-operator.{{ kubernetes_zfs_localpv_version }}.yml.j2" dest: /etc/kubernetes/addons/zfs-localpv/config.yml - name: check if zfs-localpv is already installed check_mode: no command: kubectl --kubeconfig /etc/kubernetes/admin.conf diff -f /etc/kubernetes/addons/zfs-localpv/config.yml failed_when: false changed_when: false register: kube_zfs_localpv_config_diff_result - name: install zfs-localpv onto the cluster when: kube_zfs_localpv_config_diff_result.rc != 0 command: kubectl --kubeconfig /etc/kubernetes/admin.conf apply -f /etc/kubernetes/addons/zfs-localpv/config.yml - name: copy storageclasses config for zfs-localpv loop: "{{ kubernetes_zfs_localpv_storage_classes | dict2items }}" loop_control: label: "{{ item.key }}" template: src: "storageclass.yml.j2" dest: "/etc/kubernetes/addons/zfs-localpv/sc-{{ item.key }}.yml" - name: check if zfs-localpv storageclass already exists loop: "{{ kubernetes_zfs_localpv_storage_classes | list }}" check_mode: no command: "kubectl --kubeconfig /etc/kubernetes/admin.conf diff -f /etc/kubernetes/addons/zfs-localpv/sc-{{ item }}.yml" failed_when: false changed_when: false register: kube_zfs_localpv_sc_diff - name: install/update storageclasses for zfs-localpv loop: "{{ kube_zfs_localpv_sc_diff.results | selectattr('rc', 'ne', 0) | map(attribute='item') }}" command: "kubectl --kubeconfig /etc/kubernetes/admin.conf apply -f /etc/kubernetes/addons/zfs-localpv/sc-{{ item }}.yml"