Skip to content

cc_set_hostname: do not write "localhost" when no hostname is given (#1453)

BZ: 1980403
Tested by: QA

commit 4370e9149371dc89be82cb05d30d33e4d2638cec
Author: Emanuele Giuseppe Esposito <eesposit@redhat.com>
Date:   Thu Jun 2 16:03:43 2022 +0200

    cc_set_hostname: do not write "localhost" when no hostname is given (#1453)
    
    commit 74e43496f353db52e15d96abeb54ad63baac5be9
    Author: Emanuele Giuseppe Esposito <eesposit@redhat.com>
    Date:   Tue May 31 16:03:44 2022 +0200
    
        cc_set_hostname: do not write "localhost" when no hostname is given (#1453)
    
        Systemd used to sometimes ignore localhost in /etc/hostnames, and many programs
        like cloud-init used this as a workaround to set a default hostname.
    
        From https://github.com/systemd/systemd/commit/d39079fcaa05e23540d2b1f0270fa31c22a7e9f1:
    
                We would sometimes ignore localhost-style names in /etc/hostname. That is
                brittle. If the user configured some hostname, it's most likely because they
                want to use that as the hostname. If they don't want to use such a hostname,
                they should just not create the config. Everything becomes simples if we just
                use the configured hostname as-is.
    
                This behaviour seems to have been a workaround for Anaconda installer and other
                tools writing out /etc/hostname with the default of "localhost.localdomain".
                Anaconda PR to stop doing that: rhinstaller/anaconda#3040.
                That might have been useful as a work-around for other programs misbehaving if
                /etc/hostname was not present, but nowadays it's not useful because systemd
                mostly controls the hostname and it is perfectly happy without that file.
    
                Apart from making things simpler, this allows users to set a hostname like
                "localhost" and have it honoured, if such a whim strikes them.
    
        As also suggested by the Anaconda PR, we need to stop writing default "localhost"
        in /etc/hostnames, and let the right service (networking, user) do that if they
        need to. Otherwise, "localhost" will permanently stay as hostname and will
        prevent other tools like NetworkManager from setting the right one.
    
        Signed-off-by: Emanuele Giuseppe Esposito <eesposit@redhat.com>
    
        RHBZ: 1980403
    
    Conflicts:
            cloudinit/config/cc_update_etc_hosts.py
            cloudinit/sources/DataSourceCloudSigma.py
            cloudinit/util.py
            tests/unittests/test_util.py
                Additional imports and/or conditionals that are not present in this version
    
    Signed-off-by: Emanuele Giuseppe Esposito <eesposit@redhat.com>

Merge request reports