[CentOS] CentOS 7, networkmangler, and hostname

Wed Jul 23 18:55:10 UTC 2014
m.roth at 5-cent.us <m.roth at 5-cent.us>

Mauricio Tavares wrote:
> On Wed, Jul 23, 2014 at 2:01 PM,  <m.roth at 5-cent.us> wrote:
>> I've a 7 box (actually, it's RHEL, but the general list there is
>> moribund), and I'm trying to configure it "correctly" so that it gets
>> its hostname from the DHCP server. All I've found so far is a script
>> to use from hooks of some kind. *Surely* there's just a configuration
>> file option somewhere....
>>
>       Best I found using network manager is writing a script,
> dhclient-exit-hooks.d/hostname
> (http://askubuntu.com/questions/104918/how-to-get-hostname-from-dhcp-server).
> There is also a way to do that using systemd-networkd; I am not very
> proud to say I know how to do so though.
>
I've been digging, and found something a) confusing and b) disturbing. But
first, *does* NM use any of the /etc/sysconfig/network-scripts *other*
than the ifcfg-<interface>? Specifically, does it use ifup, ifdown, and
esp. ifup-post?

Here's the reason: in ifup-post is the following code:
# don't set hostname on ppp/slip connections
if [ "$2" = "boot" -a \
     "${DEVICE}" != lo -a \
     "${DEVICETYPE}" != "ppp" -a \
     "${DEVICETYPE}" != "slip" ]; then
    if need_hostname; then
        IPADDR=$(LANG=C ip -o -4 addr ls dev ${DEVICE} | awk '{ print $4 ;
exit }')
        eval $(/bin/ipcalc --silent --hostname ${IPADDR} ; echo "status=$?")
        if [ "$status" = "0" ]; then
            set_hostname $HOSTNAME
        fi
    fi
fi

Now, that function, need_hostname, is in network-functions, and reads:
need_hostname ()
{
    CHECK_HOSTNAME=$(hostname)
    if [ "$CHECK_HOSTNAME" = "(none)" -o "$CHECK_HOSTNAME" = "localhost" -o \
        "$CHECK_HOSTNAME" = "localhost.localdomain" ]; then
        return 0
    else
        return 1
    fi
}

So it *should* be setting it... if it's called.

        mark