|
@@ -5,174 +5,14 @@
|
|
|
changed_when: False
|
|
|
check_mode: no
|
|
|
|
|
|
-- name: Verify target namespace exists
|
|
|
- oc_project:
|
|
|
- state: present
|
|
|
- name: "{{ openshift_storage_glusterfs_namespace }}"
|
|
|
- when: openshift_storage_glusterfs_is_native or openshift_storage_glusterfs_heketi_is_native
|
|
|
-
|
|
|
-- include: glusterfs_deploy.yml
|
|
|
- when: openshift_storage_glusterfs_is_native
|
|
|
-
|
|
|
-- name: Make sure heketi-client is installed
|
|
|
- package: name=heketi-client state=present
|
|
|
-
|
|
|
-- name: Delete pre-existing heketi resources
|
|
|
- oc_obj:
|
|
|
- namespace: "{{ openshift_storage_glusterfs_namespace }}"
|
|
|
- kind: "{{ item.kind }}"
|
|
|
- name: "{{ item.name | default(omit) }}"
|
|
|
- selector: "{{ item.selector | default(omit) }}"
|
|
|
- state: absent
|
|
|
- with_items:
|
|
|
- - kind: "template,route,service,jobs,dc,secret"
|
|
|
- selector: "deploy-heketi"
|
|
|
- - kind: "template,route,dc,service"
|
|
|
- name: "heketi"
|
|
|
- - kind: "svc,ep"
|
|
|
- name: "heketi-storage-endpoints"
|
|
|
- - kind: "sa"
|
|
|
- name: "heketi-service-account"
|
|
|
- failed_when: False
|
|
|
- when: openshift_storage_glusterfs_heketi_wipe
|
|
|
-
|
|
|
-- name: Wait for deploy-heketi pods to terminate
|
|
|
- oc_obj:
|
|
|
- namespace: "{{ openshift_storage_glusterfs_namespace }}"
|
|
|
- kind: pod
|
|
|
- state: list
|
|
|
- selector: "glusterfs=deploy-heketi-pod"
|
|
|
- register: heketi_pod
|
|
|
- until: "heketi_pod.results.results[0]['items'] | count == 0"
|
|
|
- delay: 10
|
|
|
- retries: "{{ (openshift_storage_glusterfs_timeout / 10) | int }}"
|
|
|
- when: openshift_storage_glusterfs_heketi_wipe
|
|
|
-
|
|
|
-- name: Wait for heketi pods to terminate
|
|
|
- oc_obj:
|
|
|
- namespace: "{{ openshift_storage_glusterfs_namespace }}"
|
|
|
- kind: pod
|
|
|
- state: list
|
|
|
- selector: "glusterfs=heketi-pod"
|
|
|
- register: heketi_pod
|
|
|
- until: "heketi_pod.results.results[0]['items'] | count == 0"
|
|
|
- delay: 10
|
|
|
- retries: "{{ (openshift_storage_glusterfs_timeout / 10) | int }}"
|
|
|
- when: openshift_storage_glusterfs_heketi_wipe
|
|
|
-
|
|
|
-- name: Create heketi service account
|
|
|
- oc_serviceaccount:
|
|
|
- namespace: "{{ openshift_storage_glusterfs_namespace }}"
|
|
|
- name: heketi-service-account
|
|
|
- state: present
|
|
|
- when: openshift_storage_glusterfs_heketi_is_native
|
|
|
-
|
|
|
-- name: Add heketi service account to privileged SCC
|
|
|
- oc_adm_policy_user:
|
|
|
- user: "system:serviceaccount:{{ openshift_storage_glusterfs_namespace }}:heketi-service-account"
|
|
|
- resource_kind: scc
|
|
|
- resource_name: privileged
|
|
|
- state: present
|
|
|
- when: openshift_storage_glusterfs_heketi_is_native
|
|
|
-
|
|
|
-- name: Allow heketi service account to view/edit pods
|
|
|
- oc_adm_policy_user:
|
|
|
- user: "system:serviceaccount:{{ openshift_storage_glusterfs_namespace }}:heketi-service-account"
|
|
|
- resource_kind: role
|
|
|
- resource_name: edit
|
|
|
- state: present
|
|
|
- when: openshift_storage_glusterfs_heketi_is_native
|
|
|
-
|
|
|
-- name: Check for existing deploy-heketi pod
|
|
|
- oc_obj:
|
|
|
- namespace: "{{ openshift_storage_glusterfs_namespace }}"
|
|
|
- state: list
|
|
|
- kind: pod
|
|
|
- selector: "glusterfs=deploy-heketi-pod,deploy-heketi=support"
|
|
|
- register: heketi_pod
|
|
|
- when: openshift_storage_glusterfs_heketi_is_native
|
|
|
-
|
|
|
-- name: Check if need to deploy deploy-heketi
|
|
|
- set_fact:
|
|
|
- openshift_storage_glusterfs_heketi_deploy_is_missing: False
|
|
|
- when:
|
|
|
- - "openshift_storage_glusterfs_heketi_is_native"
|
|
|
- - "heketi_pod.results.results[0]['items'] | count > 0"
|
|
|
- # deploy-heketi is not missing when there are one or more pods with matching labels whose 'Ready' status is True
|
|
|
- - "heketi_pod.results.results[0]['items'] | oo_collect(attribute='status.conditions') | oo_collect(attribute='status', filters={'type': 'Ready'}) | map('bool') | select | list | count > 0"
|
|
|
-
|
|
|
-- name: Check for existing heketi pod
|
|
|
- oc_obj:
|
|
|
- namespace: "{{ openshift_storage_glusterfs_namespace }}"
|
|
|
- state: list
|
|
|
- kind: pod
|
|
|
- selector: "glusterfs=heketi-pod"
|
|
|
- register: heketi_pod
|
|
|
- when: openshift_storage_glusterfs_heketi_is_native
|
|
|
-
|
|
|
-- name: Check if need to deploy heketi
|
|
|
- set_fact:
|
|
|
- openshift_storage_glusterfs_heketi_is_missing: False
|
|
|
+- include: glusterfs_config.yml
|
|
|
when:
|
|
|
- - "openshift_storage_glusterfs_heketi_is_native"
|
|
|
- - "heketi_pod.results.results[0]['items'] | count > 0"
|
|
|
- # heketi is not missing when there are one or more pods with matching labels whose 'Ready' status is True
|
|
|
- - "heketi_pod.results.results[0]['items'] | oo_collect(attribute='status.conditions') | oo_collect(attribute='status', filters={'type': 'Ready'}) | map('bool') | select | list | count > 0"
|
|
|
-
|
|
|
-- include: heketi_deploy_part1.yml
|
|
|
- when:
|
|
|
- - openshift_storage_glusterfs_heketi_is_native
|
|
|
- - openshift_storage_glusterfs_heketi_deploy_is_missing
|
|
|
- - openshift_storage_glusterfs_heketi_is_missing
|
|
|
-
|
|
|
-- name: Determine heketi URL
|
|
|
- oc_obj:
|
|
|
- namespace: "{{ openshift_storage_glusterfs_namespace }}"
|
|
|
- state: list
|
|
|
- kind: ep
|
|
|
- selector: "glusterfs in (deploy-heketi-service, heketi-service)"
|
|
|
- register: heketi_url
|
|
|
- until:
|
|
|
- - "heketi_url.results.results[0]['items'][0].subsets[0].addresses[0].ip != ''"
|
|
|
- - "heketi_url.results.results[0]['items'][0].subsets[0].ports[0].port != ''"
|
|
|
- delay: 10
|
|
|
- retries: "{{ (openshift_storage_glusterfs_timeout / 10) | int }}"
|
|
|
- when:
|
|
|
- - openshift_storage_glusterfs_heketi_is_native
|
|
|
- - openshift_storage_glusterfs_heketi_url is undefined
|
|
|
-
|
|
|
-- name: Set heketi URL
|
|
|
- set_fact:
|
|
|
- openshift_storage_glusterfs_heketi_url: "{{ heketi_url.results.results[0]['items'][0].subsets[0].addresses[0].ip }}:{{ heketi_url.results.results[0]['items'][0].subsets[0].ports[0].port }}"
|
|
|
- when:
|
|
|
- - openshift_storage_glusterfs_heketi_is_native
|
|
|
- - openshift_storage_glusterfs_heketi_url is undefined
|
|
|
-
|
|
|
-- name: Verify heketi service
|
|
|
- command: "heketi-cli -s http://{{ openshift_storage_glusterfs_heketi_url }} --user admin --secret '{{ openshift_storage_glusterfs_heketi_admin_key }}' cluster list"
|
|
|
- changed_when: False
|
|
|
-
|
|
|
-- name: Generate topology file
|
|
|
- template:
|
|
|
- src: "{{ openshift.common.examples_content_version }}/topology.json.j2"
|
|
|
- dest: "{{ mktemp.stdout }}/topology.json"
|
|
|
- when:
|
|
|
- - openshift_storage_glusterfs_is_native
|
|
|
- - openshift_storage_glusterfs_heketi_topology_load
|
|
|
-
|
|
|
-- name: Load heketi topology
|
|
|
- command: "heketi-cli -s http://{{ openshift_storage_glusterfs_heketi_url }} --user admin --secret '{{ openshift_storage_glusterfs_heketi_admin_key }}' topology load --json={{ mktemp.stdout }}/topology.json 2>&1"
|
|
|
- register: topology_load
|
|
|
- failed_when: topology_load.rc != 0 or 'Unable' in topology_load.stdout
|
|
|
- when:
|
|
|
- - openshift_storage_glusterfs_is_native
|
|
|
- - openshift_storage_glusterfs_heketi_topology_load
|
|
|
-
|
|
|
-- include: heketi_deploy_part2.yml
|
|
|
- when: openshift_storage_glusterfs_heketi_is_native and openshift_storage_glusterfs_heketi_is_missing
|
|
|
+ - g_glusterfs_hosts | default([]) | count > 0
|
|
|
|
|
|
- include: glusterfs_registry.yml
|
|
|
- when: openshift.hosted.registry.storage.kind == 'glusterfs'
|
|
|
+ when:
|
|
|
+ - g_glusterfs_registry_hosts | default([]) | count > 0
|
|
|
+ - "openshift.hosted.registry.storage.kind == 'glusterfs'"
|
|
|
|
|
|
- name: Delete temp directory
|
|
|
file:
|