patternMinor
How come my hostname isn't set to the FQDN with cloud-init when using `prefer_fqdn_over_hostname`?
Viewed 0 times
prefer_fqdn_over_hostnamethecomewithinitcloudfqdnhostnameusinghow
Problem
prefer_fqdn_over_hostname is documented as,If both
fqdn and hostname are set, it is distro dependent whether hostname or fqdn is used, unless the prefer_fqdn_over_hostname option is true and fqdn is set it will force the use of FQDN in all distros, and if false then it will force the hostname use.In my
cloud-init.cfg I have,hostname: "host-10-2-65-89"
fqdn: "host-10-2-65-89.openstack.build."
prefer_fqdn_over_hostname: trueBut when I run this my hostname is set to
host-10-2-65-89. Here is the log, and you can see it explicitly says host-10-2-65-89.openstack.build.249 - cc_set_hostname.py[DEBUG]: Setting the hostname to host-10-2-65-89.openstack.build. (host-10-2-65-89)
250 - util.py[DEBUG]: Reading from /etc/hostname (quiet=False)
250 - util.py[DEBUG]: Read 7 bytes from /etc/hostname
250 - util.py[DEBUG]: Writing to /etc/hostname - wb: [644] 16 bytes
250 - __init__.py[DEBUG]: Non-persistently setting the system hostname to host-10-2-65-89
250 - subp.py[DEBUG]: Running command ['hostname', 'host-10-2-65-89'] with allowed return codes [0] (shell=False, capture=True)
256 - atomic_helper.py[DEBUG]: Atomically writing to file /var/lib/cloud/data/set-hostname (via temporary file /var/lib/cloud/data/tmpaxqv667c) - w: [644] 80 bytes/charsThe contents of
/var/lib/cloud/data/set-hostname{
"fqdn": "host-10-2-65-89.openstack.build.",
"hostname": "host-10-2-65-89"
}
The contents of
/var/lib/cloud/data/previous-hostnamehost-10-2-65-89.openstack.build.I'm using
Cloud-init v. 21.4-0ubuntu1~20.04.1I've tried deleting all but the FQDN and it still doesn't set the
/etc/hostname to the fqdn.Solution
This is a bug in
I was getting silent failures because the hostname was
Instead of
What actually happens is,
Background, what I was actually doing was using Terraform,
And then setting the
But the problem is the terraform was return the actual FQDN,
But you can't provide that to hostname. My solution was to remove the dot (
cloud-init, I've filed it upstream as Bug #1966533I was getting silent failures because the hostname was
host-10-2-65-89.openstack.build.Instead of
host-10-2-65-89.openstack.buildWhat actually happens is,
$ sudo hostname host-10-2-65-89.openstack.build.
hostname: the specified hostname is invalid
Background, what I was actually doing was using Terraform,
fqdn: "${fqdn}"And then setting the
fqdn like this,fqdn = openstack_networking_port_v2.port_company.dns_assignment[0].fqdnBut the problem is the terraform was return the actual FQDN,
host-10-2-65-89.openstack.build.But you can't provide that to hostname. My solution was to remove the dot (
.) with trimsuffixfqdn = trimsuffix(
openstack_networking_port_v2.port_company.dns_assignment[0].fqdn,
"."
)Code Snippets
host-10-2-65-89.openstack.build.host-10-2-65-89.openstack.buildfqdn: "${fqdn}"fqdn = openstack_networking_port_v2.port_company.dns_assignment[0].fqdnhost-10-2-65-89.openstack.build.Context
StackExchange DevOps Q#15678, answer score: 3
Revisions (0)
No revisions yet.