|
| 1 | +--- |
| 2 | +# Tasks for testing IPA integration with Keystone |
| 3 | +- name: Check if IPA is enabled |
| 4 | + ansible.builtin.fail: |
| 5 | + msg: "IPA is not enabled (enable_tlse is not true). Skipping IPA tests." |
| 6 | + when: enable_tlse is not defined or not enable_tlse |
| 7 | + |
| 8 | +- name: Wait for Keystone to be fully operational |
| 9 | + ansible.builtin.shell: | |
| 10 | + {{ shell_header }} |
| 11 | + {{ oc_header }} |
| 12 | + oc wait pod --for condition=Ready --selector=service=keystone |
| 13 | + register: keystone_wait_result |
| 14 | + until: keystone_wait_result is success |
| 15 | + retries: 60 |
| 16 | + delay: 2 |
| 17 | + when: enable_tlse |
| 18 | + |
| 19 | +- name: Wait for openstackclient pod to be ready |
| 20 | + ansible.builtin.shell: | |
| 21 | + {{ shell_header }} |
| 22 | + {{ oc_header }} |
| 23 | + oc wait pod --for condition=Ready --selector=service=openstackclient |
| 24 | + register: osc_wait_result |
| 25 | + until: osc_wait_result is success |
| 26 | + retries: 60 |
| 27 | + delay: 2 |
| 28 | + when: enable_tlse |
| 29 | + |
| 30 | +- name: Get Keystone route |
| 31 | + ansible.builtin.shell: | |
| 32 | + {{ shell_header }} |
| 33 | + {{ oc_header }} |
| 34 | + oc get route keystone-public -n openstack -o jsonpath='{.spec.host}' |
| 35 | + register: keystone_route |
| 36 | + when: enable_tlse |
| 37 | + |
| 38 | +- name: Create IPA test user cloudrc file |
| 39 | + ansible.builtin.template: |
| 40 | + src: ipauser.j2 |
| 41 | + dest: "{{ ansible_user_dir }}/ipauser" |
| 42 | + mode: "0600" |
| 43 | + vars: |
| 44 | + auth_url: "https://{{ keystone_route.stdout }}/v3" |
| 45 | + username: "ipauser1" |
| 46 | + password: "{{ ipa_user_password }}" |
| 47 | + domain: "REDHAT" |
| 48 | + when: enable_tlse |
| 49 | + |
| 50 | +- name: Copy IPA test user cloudrc to openstackclient pod |
| 51 | + ansible.builtin.shell: | |
| 52 | + {{ shell_header }} |
| 53 | + {{ oc_header }} |
| 54 | + oc cp {{ ansible_user_dir }}/ipauser openstackclient:/home/cloud-admin/ipauser |
| 55 | + when: enable_tlse |
| 56 | + |
| 57 | +- name: Test IPA user authentication |
| 58 | + ansible.builtin.shell: | |
| 59 | + {{ shell_header }} |
| 60 | + {{ oc_header }} |
| 61 | + oc exec -t openstackclient -- bash -c " |
| 62 | + source /home/cloud-admin/ipauser && |
| 63 | + export OS_IDENTITY_API_VERSION=3 && |
| 64 | + openstack token issue -f value -c id > /dev/null && |
| 65 | + echo 'IPA user authentication successful' || |
| 66 | + echo 'IPA user authentication failed'" |
| 67 | + register: ipa_auth_test |
| 68 | + failed_when: "'IPA user authentication failed' in ipa_auth_test.stdout" |
| 69 | + when: enable_tlse |
| 70 | + |
| 71 | +- name: List IPA users via Keystone |
| 72 | + ansible.builtin.shell: | |
| 73 | + {{ shell_header }} |
| 74 | + {{ oc_header }} |
| 75 | + oc exec -t openstackclient -- bash -c " |
| 76 | + source /home/cloud-admin/ipauser && |
| 77 | + export OS_IDENTITY_API_VERSION=3 && |
| 78 | + openstack user list --domain REDHAT" |
| 79 | + register: ipa_user_list |
| 80 | + when: enable_tlse |
| 81 | + |
| 82 | +- name: Verify IPA users are accessible |
| 83 | + ansible.builtin.assert: |
| 84 | + that: |
| 85 | + - "'ipauser1' in ipa_user_list.stdout" |
| 86 | + - "'ipauser2' in ipa_user_list.stdout" |
| 87 | + - "'ipauser3' in ipa_user_list.stdout" |
| 88 | + when: enable_tlse |
| 89 | + |
| 90 | +- name: List IPA groups via Keystone |
| 91 | + ansible.builtin.shell: | |
| 92 | + {{ shell_header }} |
| 93 | + {{ oc_header }} |
| 94 | + oc exec -t openstackclient -- bash -c " |
| 95 | + source /home/cloud-admin/ipauser && |
| 96 | + export OS_IDENTITY_API_VERSION=3 && |
| 97 | + openstack group list --domain REDHAT" |
| 98 | + register: ipa_group_list |
| 99 | + when: enable_tlse |
| 100 | + |
| 101 | +- name: Verify IPA groups are accessible |
| 102 | + ansible.builtin.assert: |
| 103 | + that: |
| 104 | + - "'grp-openstack' in ipa_group_list.stdout" |
| 105 | + - "'grp-openstack-admin' in ipa_group_list.stdout" |
| 106 | + - "'grp-openstack-demo' in ipa_group_list.stdout" |
| 107 | + when: enable_tlse |
| 108 | + |
| 109 | +- name: Verify group memberships |
| 110 | + when: enable_tlse |
| 111 | + block: |
| 112 | + - name: Check ipauser1 in grp-openstack-admin |
| 113 | + ansible.builtin.shell: | |
| 114 | + {{ shell_header }} |
| 115 | + {{ oc_header }} |
| 116 | + oc exec -t openstackclient -- bash -c " |
| 117 | + source /home/cloud-admin/ipauser && |
| 118 | + export OS_IDENTITY_API_VERSION=3 && |
| 119 | + openstack group contains user --group-domain REDHAT --user-domain REDHAT grp-openstack-admin ipauser1" |
| 120 | + register: user1_group_result |
| 121 | + failed_when: "'ipauser1 in group grp-openstack-admin' not in user1_group_result.stdout" |
| 122 | + |
| 123 | + - name: Check ipauser2 in grp-openstack-demo |
| 124 | + ansible.builtin.shell: | |
| 125 | + {{ shell_header }} |
| 126 | + {{ oc_header }} |
| 127 | + oc exec -t openstackclient -- bash -c " |
| 128 | + source /home/cloud-admin/ipauser && |
| 129 | + export OS_IDENTITY_API_VERSION=3 && |
| 130 | + openstack group contains user --group-domain REDHAT --user-domain REDHAT grp-openstack-demo ipauser2" |
| 131 | + register: user2_group_result |
| 132 | + failed_when: "'ipauser2 in group grp-openstack-demo' not in user2_group_result.stdout" |
| 133 | + |
| 134 | + - name: Check ipauser3 in grp-openstack |
| 135 | + ansible.builtin.shell: | |
| 136 | + {{ shell_header }} |
| 137 | + {{ oc_header }} |
| 138 | + oc exec -t openstackclient -- bash -c " |
| 139 | + source /home/cloud-admin/ipauser && |
| 140 | + export OS_IDENTITY_API_VERSION=3 && |
| 141 | + openstack group contains user --group-domain REDHAT --user-domain REDHAT grp-openstack ipauser3" |
| 142 | + register: user3_group_result |
| 143 | + failed_when: "'ipauser3 in group grp-openstack' not in user3_group_result.stdout" |
0 commit comments