hostname cannot be the same as the domain name
Run Centos 7 Run ansible-galaxy collection install freeipa.ansible_freeipa Run ansible-playbook -i inventory.yml playbook.yml playbook.yml:
--- - name: Playbook to configure IPA servers hosts: ipaserver become: true collections: - freeipa.ansible_freeipa pre_tasks: - set_fact: ipaserver_realm: "{{ ipaserver_realm|upper }}" - name: Remove 127.0.1.1 from /etc/hosts lineinfile: path: /etc/hosts state: absent regexp: '^127.0.1.1' - name: 'Add association between external ip and ipa domain into etc/hosts' lineinfile: path: '/etc/hosts' line: '{{ ipaserver_ip_addresses|first }} {{ ipaserver_domain }}' insertbefore: BOF - name: Install packages bind-utils git nano epel-release become: true package: name: - bind-utils - git - nano - vim - epel-release state: present - name: Retrieve hostname from IP address. command: dig +short +onesoa -x "{{ ansible_default_ipv4.address }}" register: dig_out - name: Provide reverse_hostname fact. set_fact: reverse_hostname: "{{ dig_out.stdout_lines[0][:-1] }}" - name: Print reverse_hostname debug: var: reverse_hostname - name: Set hostname as ipaserver_domain ansible.builtin.hostname: name: "{{ ipaserver_domain }}" use: systemd - name: Disable SELinux ansible.posix.selinux: state: disabled - name: Print domain debug: var: "{{ ipaserver_domain | default(omit) }}" - name: Print hostname debug: var: "{{ ipaserver_hostname | default(ansible_facts['fqdn']) }}" roles: - role: freeipa.ansible_freeipa.ipaserver state: present post_tasks: - name: Create a directory ansible.builtin.file: path: freeipa-certs state: directory mode: '0755' - name: Download Let is Encrypt CA certificates get_url: url: "{{ item }}" dest: freeipa-certs loop: - https://letsencrypt.org/certs/isrgrootx1.pem - https://letsencrypt.org/certs/isrg-root-x2.pem - https://letsencrypt.org/certs/lets-encrypt-r3.pem - https://letsencrypt.org/certs/lets-encrypt-e1.pem - https://letsencrypt.org/certs/lets-encrypt-r4.pem - https://letsencrypt.org/certs/lets-encrypt-e2.pem - name: Install Let is Encrypt CA certificates into FreeIPA certificate store shell: "ipa-cacert-manage install {{ item }}" loop: - freeipa-certs/isrgrootx1.pem - freeipa-certs/isrg-root-x2.pem - freeipa-certs/lets-encrypt-r3.pem - freeipa-certs/lets-encrypt-e1.pem - freeipa-certs/lets-encrypt-r4.pem - freeipa-certs/lets-encrypt-e2.pem register: ipa_cacert_manage_install - name: Debug ipa-cacert-manage install debug: var: ipa_cacert_manage_install - name: Update local IPA certificate databases with certificates from the server shell: "ipa-certupdate" register: ipa_certupdate - name: Debug ipa-certupdate debug: var: ipa_certupdate - name: Install packages certbot become: yes package: name: - certbot state: present - name: Stop service httpd, if started ansible.builtin.service: name: httpd state: stopped - name: Create letsencrypt certificate shell: certbot certonly --standalone --preferred-challenges http --agree-tos -n -d {{ ipaserver_domain }} --register-unsafely-without-email args: creates: /etc/letsencrypt/live/{{ ipaserver_domain }} register: create_letsencrypt_certificate - name: Debug Create letsencrypt certificate debug: var: create_letsencrypt_certificate - name: Start service httpd, if not started ansible.builtin.service: name: httpd state: started - name: Add Lets Encrypt SSL certificates to for use in FreeIPA Web UI shell: ipa-server-certinstall -w -d /etc/letsencrypt/live/{{ ipaserver_domain }}/privkey.pem /etc/letsencrypt/live/{{ ipaserver_domain }}/cert.pem -p '{{ ipadm_password }}' --pin='' register: add_lets_encrypt_ssl_certificates_to_freeipa - name: Debug Add Lets Encrypt SSL certificates to for use in FreeIPA Web UI debug: var: add_lets_encrypt_ssl_certificates_to_freeipa - name: Restart FreeIPA services shell: ipactl restart register: restart_freeipa_services - name: Debug Restart FreeIPA services debug: var: restart_freeipa_services
inventory.yml:
all: children: ipaserver: hosts: "freeipa": ansible_host: "xxx.xxx.xxx.xxx" vars: ansible_user: centos ansible_ssh_private_key_file: ~/.ssh/id_rsa ipaadmin_password: xxxxxxx ipadm_password: xxxxxxx ipaserver_domain: freeipa.84.252.137.134.sslip.io ipaserver_realm: freeipa.84.252.137.134.sslip.io ipaserver_ip_addresses: - '{{ ansible_default_ipv4.address|default(ansible_all_ipv4_addresses[0]) }}'
cat /etc/hosts
10.129.0.27 freeipa.84.252.137.134.sslip.io
$ rpm -q freeipa-server freeipa-client ipa-server ipa-client 389-ds-base pki-ca krb5-server
package freeipa-server is not installed package freeipa-client is not installed ipa-server-4.6.8-5.el7.centos.16.x86_64 ipa-client-4.6.8-5.el7.centos.16.x86_64 389-ds-base-1.3.11.1-4.el7_9.x86_64 pki-ca-10.5.18-27.el7_9.noarch krb5-server-1.15.1-55.el7_9.x86_64
As the message states, the server hostname must differ from the domain name. e.g. ipa.example.test for the hostname and example.test for the domain.
For full ref, this check was added when fixing ticket #9003 ipa-server-install not validating hostname != domain and we don't plan to relax this check because it would break the deployment.
You need to pick a different name for the IPA server (that is setup in your /et/hosts) and the ipaserver_domain (that is setup in your inventory.yml). Also note that the realm is usually the uppercase version of the domain name (ipaserver_realm).
Closing as invalid.
Metadata Update from @frenaud: - Issue close_status updated to: invalid - Issue status updated to: Closed (was: Open)