#9538 hostname cannot be the same as the domain name
Closed: invalid by frenaud. Opened by antonpatsev.

Issue

hostname cannot be the same as the domain name

Steps to Reproduce

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

Version/Release/Distribution

$ 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)

Metadata