# This playbook should be included with `include_tasks` as the first task # of a test playbook that requires FreeIPA information. # # Available Facts: # # ipa_version: The installed FreeIPA version. # ipa_api_version: The installed FreeIPA API version. # --- - name: Retrieving FreeIPA version. ansible.builtin.shell: cmd: 'ipa --version | sed -n "s/VERSION: \([^,]*\).*API_VERSION: \([^,]*\).*/\1\\n\2/p"' register: ipa_cmd_version - name: Verify if host is an IPA server or client. ansible.builtin.shell: cmd: | echo SomeADMINpassword | kinit -c {{ krb5ccname }} admin RESULT=$(KRB5CCNAME={{ krb5ccname }} ipa server-show `hostname` && echo SERVER || echo CLIENT) kdestroy -A -c {{ krb5ccname }} echo $RESULT vars: krb5ccname: "__check_ipa_host_is_client_or_server__" register: output - name: Set FreeIPA facts. ansible.builtin.set_fact: ipa_version: "{{ ipa_cmd_version.stdout_lines[0] }}" ipa_api_version: "{{ ipa_cmd_version.stdout_lines[1] }}" ipa_host_is_client: "{{ (output.stdout_lines[-1] == 'CLIENT') | bool }}" trust_test_is_supported: no - name: Ensure ipaserver_domain is set when: ipaserver_domain is not defined block: - name: Get Domain from server name ansible.builtin.set_fact: ipaserver_domain: "{{ ansible_facts['fqdn'].split('.')[1:] | join('.') }}" when: "'fqdn' in ansible_facts" - name: Set Domain to 'ipa.test' if FQDN could not be retrieved. ansible.builtin.set_fact: ipaserver_domain: "ipa.test" when: "'fqdn' not in ansible_facts"