diff --git a/roles/kubernetes-apps/external_provisioner/local_volume_provisioner/defaults/main.yml b/roles/kubernetes-apps/external_provisioner/local_volume_provisioner/defaults/main.yml index e9c5f747f..380493cc8 100644 --- a/roles/kubernetes-apps/external_provisioner/local_volume_provisioner/defaults/main.yml +++ b/roles/kubernetes-apps/external_provisioner/local_volume_provisioner/defaults/main.yml @@ -7,15 +7,4 @@ local_volume_provisioner_nodelabels: [] # - topology.kubernetes.io/zone local_volume_provisioner_tolerations: [] local_volume_provisioner_use_node_name_only: false -# Leverages Ansible's string to Python datatype casting. Otherwise the dict_key isn't substituted. -# see https://github.com/ansible/ansible/issues/17324 -local_volume_provisioner_storage_classes: | - { - "{{ local_volume_provisioner_storage_class | default('local-storage') }}": { - "host_dir": "{{ local_volume_provisioner_base_dir | default('/mnt/disks') }}", - "mount_dir": "{{ local_volume_provisioner_mount_dir | default('/mnt/disks') }}", - "volume_mode": "Filesystem", - "fs_type": "ext4" - } - } local_volume_provisioner_log_level: 2 diff --git a/roles/kubernetes-apps/external_provisioner/local_volume_provisioner/tasks/basedirs.yml b/roles/kubernetes-apps/external_provisioner/local_volume_provisioner/tasks/basedirs.yml deleted file mode 100644 index 7add2dac5..000000000 --- a/roles/kubernetes-apps/external_provisioner/local_volume_provisioner/tasks/basedirs.yml +++ /dev/null @@ -1,12 +0,0 @@ ---- -# include to workaround mitogen issue -# https://github.com/dw/mitogen/issues/663 - -- name: "Local Volume Provisioner | Ensure base dir {{ delegate_host_base_dir.1 }} is created on {{ delegate_host_base_dir.0 }}" - file: - path: "{{ local_volume_provisioner_storage_classes[delegate_host_base_dir.1].host_dir }}" - state: directory - owner: root - group: root - mode: "{{ local_volume_provisioner_directory_mode }}" - delegate_to: "{{ delegate_host_base_dir.0 }}" diff --git a/roles/kubernetes-apps/external_provisioner/local_volume_provisioner/tasks/main.yml b/roles/kubernetes-apps/external_provisioner/local_volume_provisioner/tasks/main.yml index bc35b4782..bf9b5366f 100644 --- a/roles/kubernetes-apps/external_provisioner/local_volume_provisioner/tasks/main.yml +++ b/roles/kubernetes-apps/external_provisioner/local_volume_provisioner/tasks/main.yml @@ -1,11 +1,4 @@ --- - -- 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" diff --git a/roles/kubernetes/preinstall/tasks/0050-create_directories.yml b/roles/kubernetes/preinstall/tasks/0050-create_directories.yml index fbbe06488..7f36dec2e 100644 --- a/roles/kubernetes/preinstall/tasks/0050-create_directories.yml +++ b/roles/kubernetes/preinstall/tasks/0050-create_directories.yml @@ -113,4 +113,4 @@ - ('k8s_cluster' in group_names) - local_volume_provisioner_enabled tags: - - persistent_volumes + - external-provisioner diff --git a/roles/kubespray_defaults/defaults/main/main.yml b/roles/kubespray_defaults/defaults/main/main.yml index 3a0415e86..c4b6b7705 100644 --- a/roles/kubespray_defaults/defaults/main/main.yml +++ b/roles/kubespray_defaults/defaults/main/main.yml @@ -634,19 +634,10 @@ kube_proxy_feature_gates: [] kubelet_feature_gates: [] kubeadm_feature_gates: [] -# Local volume provisioner storage classes -# Levarages Ansibles string to Python datatype casting. Otherwise the dict_key isn't substituted -# see https://github.com/ansible/ansible/issues/17324 -local_volume_provisioner_storage_classes: | - { - "{{ local_volume_provisioner_storage_class | default('local-storage') }}": { - "host_dir": "{{ local_volume_provisioner_base_dir | default('/mnt/disks') }}", - "mount_dir": "{{ local_volume_provisioner_mount_dir | default('/mnt/disks') }}", - "volume_mode": "Filesystem", - "fs_type": "ext4" - - } - } +local_volume_provisioner_storage_class: local-storage +local_volume_provisioner_base_dir: /mnt/disks +local_volume_provisioner_mount_dir: /mnt/disks +local_volume_provisioner_storage_classes: "{{ local_volume_provisioner_storage_classes_default | items2dict }}" ssl_ca_dirs: |- [ diff --git a/roles/kubespray_defaults/vars/main/main.yml b/roles/kubespray_defaults/vars/main/main.yml index 993ea8168..cf47b8e5a 100644 --- a/roles/kubespray_defaults/vars/main/main.yml +++ b/roles/kubespray_defaults/vars/main/main.yml @@ -44,3 +44,11 @@ kube_pods_subnets: >- {%- else -%} {{ kube_pods_subnet_ipv6 }} {%- endif -%} + +local_volume_provisioner_storage_classes_default: + - key: "{{ local_volume_provisioner_storage_class }}" + value: + host_dir: "{{ local_volume_provisioner_base_dir }}" + mount_dir: "{{ local_volume_provisioner_mount_dir }}" + volume_mode: Filesystem + fs_type: ext4