--- apiVersion: v1 kind: Template metadata: name: {{ kaas_project }}-local-volumes annotations: descriptions: "{{ kaas_project }} local volumes" objects: {% for name, vol in kaas_project_local_volumes.items() %} {% set voltypes = kaas_storage_domains | json_query("[*].volumes." + vol.volume + ".type") %} {% set voltype = voltypes[0] | default('host') %} {% set mntpaths = kaas_storage_domains | json_query("[*].volumes." + vol.volume + ".mount") %} {% set mntpath = mntpaths[0] | default('') %} {% set oc_name = vol.name | default(name) | regex_replace('_','-') %} {% set cfgpath = vol.path | default("") %} {% set path = cfgpath if cfgpath[:1] == "/" else "/" + kaas_project + "/" + cfgpath %} {% if oc_name | regex_search("^" + kaas_project) %} {% set pvprefix = oc_name %} {% else %} {% set pvprefix = (kaas_project + "-" + oc_name) | regex_replace('_','-') %} {% endif %} {% for id in vol.nodes | default(hostvars[inventory_hostname]['ands_volume_' + vol.volume + '_server_ids']) %} {% set srvid = (id | string) %} {% set server_name = hostvars[inventory_hostname]['ands_host_' + srvid + '_public_hostname'] %} {% set openshift_name = hostvars[inventory_hostname]['ands_host_' + srvid + '_openshift_fqdn'] %} {% set pvname = pvprefix + '-' + server_name %} - apiVersion: v1 kind: PersistentVolume metadata: name: {{ pvname }} annotations: "volume.alpha.kubernetes.io/node-affinity": '{ "requiredDuringSchedulingIgnoredDuringExecution": { "nodeSelectorTerms": [ { "matchExpressions": [ { "key": "kubernetes.io/hostname", "operator": "In", "values": ["{{ openshift_name }}"] } ]} ] } }' spec: storageClassName: {{ vol.sc | default('kaas-lst-' + pvprefix) }} persistentVolumeReclaimPolicy: Retain local: path: "{{ mntpath }}{{ path }}" readOnly: {{ not (vol.write | default(false)) }} accessModes: - ReadWriteOnce capacity: storage: {{ vol.capacity | default(kaas_default_volume_capacity) }} {% endfor %} {% endfor %}