--- - name: Ensure heketi configuration directory exists file: path="{{ heketi_template_path }}" state="directory" mode=0600 owner=root group=root - name: Check if secret exists command: oc -n "{{ openshift_namespace }}" get secret/heketi register: result failed_when: false changed_when: (result | failed) - name: Create secret for dynamic volume provisioning command: "kubectl create secret generic heketi --type=kubernetes.io/glusterfs --from-literal=key={{ ands_secrets.heketi.admin | quote }} --from-literal=user={{ ands_secrets.heketi.user | quote }} --namespace={{ openshift_namespace }}" when: (result | changed) - name: Copy Heketi configuration copy: src="heketi/heketi.json" dest="{{ heketi_template_path }}/heketi.json" owner=root group=root mode="0644" register: result1 - name: Check if configMap exists command: oc -n "{{ openshift_namespace }}" get cm/heketi register: result2 failed_when: false changed_when: (result2 | failed) - name: Desotry existing Heketi configuration command: oc -n "{{ openshift_namespace }}" delete cm/heketi when: ( result1 | changed ) and (not (result2 | changed)) - name: Create heketiConfigmap command: oc -n "{{ openshift_namespace }}" create cm heketi --from-file="{{ heketi_template_path }}/heketi.json" when: (result1 | changed) or (result2 | changed) - name: Check if Heketi POD is running command: oc -n "{{ openshift_namespace }}" get dc/heketi --template "{{ '{{.status.availableReplicas}}' }}" register: result failed_when: false changed_when: (result | failed) or ((result.stdout | int) < 1) - name: Fix GlusterFS volume permissions include_tasks: heketi_perms.yml args: apply: run_once: true delegate_to: "{{ groups.masters[0] }}" when: (result | changed) - name: Copy Heketi Template template: src="heketi/heketi_template.json.j2" dest="{{ heketi_template_path }}/heketi_template.json" owner=root group=root mode="0644" register: result - name: Create Heketi Pod include_role: name="openshift_resource" vars: template: heketi_template.json template_path: "{{ heketi_template_path }}" project: "{{ openshift_namespace }}" recreate: "{{ result | changed | ternary (true, false) }}" - name: Wait until heketi service is running wait_for: host="heketi.{{ openshift_master_default_subdomain }}" port=80 state=present - name: Copy Heketi topology template: src="heketi/topology.json.j2" dest="{{ heketi_template_path }}/topology.json" owner=root group=root mode="0644" notify: heketi_topology - name: Copy Heketi storage class template: src="heketi/heketi-sc.yml.j2" dest="{{ heketi_template_path }}/heketi-sc.yml" owner=root group=root mode="0644" register: result - name: Setup Heketi-based dynamic volume provisioning include_role: name="openshift_resource" vars: template: heketi-sc.yml template_path: "{{ heketi_template_path }}" project: "{{ openshift_namespace }}" recreate: "{{ result | changed | ternary (true, false) }}"