summaryrefslogtreecommitdiff
path: root/cloudinit/config/cc_update_etc_hosts.py
diff options
context:
space:
mode:
authorAndy Fiddaman <andy@omniosce.org>2021-09-02 14:26:28 +0000
committerGitHub <noreply@github.com>2021-09-02 09:26:28 -0500
commit7fe0f900adcd45a74a24b7f9b251e2ee35b53b54 (patch)
tree61e5b54fc5c4ac815c5e7347725555dd61dbbe0a /cloudinit/config/cc_update_etc_hosts.py
parentf6c71fd758a3589ac5f62fd251d60b00edf5bb1c (diff)
downloadvyos-cloud-init-7fe0f900adcd45a74a24b7f9b251e2ee35b53b54.tar.gz
vyos-cloud-init-7fe0f900adcd45a74a24b7f9b251e2ee35b53b54.zip
cc_update_etc_hosts: Use the distribution-defined path for the hosts file (#983)
The distribution class has a field that specifies the location of the system hosts file and this can be overridden in subclasses. While the field is correctly used in distro.update_etc_hosts(), the update_etc_hosts module does not use it and just assumes '/etc/hosts' This fixes the module to use the distribution-specific variable.
Diffstat (limited to 'cloudinit/config/cc_update_etc_hosts.py')
-rw-r--r--cloudinit/config/cc_update_etc_hosts.py32
1 files changed, 18 insertions, 14 deletions
diff --git a/cloudinit/config/cc_update_etc_hosts.py b/cloudinit/config/cc_update_etc_hosts.py
index 03fffb96..3a78fccc 100644
--- a/cloudinit/config/cc_update_etc_hosts.py
+++ b/cloudinit/config/cc_update_etc_hosts.py
@@ -9,27 +9,28 @@
"""
Update Etc Hosts
----------------
-**Summary:** update ``/etc/hosts``
+**Summary:** update the hosts file (usually ``/etc/hosts``)
-This module will update the contents of ``/etc/hosts`` based on the
-hostname/fqdn specified in config. Management of ``/etc/hosts`` is controlled
-using ``manage_etc_hosts``. If this is set to false, cloud-init will not manage
-``/etc/hosts`` at all. This is the default behavior.
+This module will update the contents of the local hosts database (hosts file;
+usually ``/etc/hosts``) based on the hostname/fqdn specified in config.
+Management of the hosts file is controlled using ``manage_etc_hosts``. If this
+is set to false, cloud-init will not manage the hosts file at all. This is the
+default behavior.
-If set to ``true`` or ``template``, cloud-init will generate ``/etc/hosts``
+If set to ``true`` or ``template``, cloud-init will generate the hosts file
using the template located in ``/etc/cloud/templates/hosts.tmpl``. In the
``/etc/cloud/templates/hosts.tmpl`` template, the strings ``$hostname`` and
``$fqdn`` will be replaced with the hostname and fqdn respectively.
If ``manage_etc_hosts`` is set to ``localhost``, then cloud-init will not
-rewrite ``/etc/hosts`` entirely, but rather will ensure that a entry for the
-fqdn with a distribution dependent ip is present in ``/etc/hosts`` (i.e.
-``ping <hostname>`` will ping ``127.0.0.1`` or ``127.0.1.1`` or other ip).
+rewrite the hosts file entirely, but rather will ensure that a entry for the
+fqdn with a distribution dependent ip is present (i.e. ``ping <hostname>`` will
+ping ``127.0.0.1`` or ``127.0.1.1`` or other ip).
.. note::
if ``manage_etc_hosts`` is set ``true`` or ``template``, the contents
- of ``/etc/hosts`` will be updated every boot. to make any changes to
- ``/etc/hosts`` persistant they must be made in
+ of the hosts file will be updated every boot. To make any changes to
+ the hosts file persistent they must be made in
``/etc/cloud/templates/hosts.tmpl``
.. note::
@@ -59,6 +60,9 @@ frequency = PER_ALWAYS
def handle(name, cfg, cloud, log, _args):
manage_hosts = util.get_cfg_option_str(cfg, "manage_etc_hosts", False)
+
+ hosts_fn = cloud.distro.hosts_fn
+
if util.translate_bool(manage_hosts, addons=['template']):
(hostname, fqdn) = util.get_hostname_fqdn(cfg, cloud)
if not hostname:
@@ -74,7 +78,7 @@ def handle(name, cfg, cloud, log, _args):
" found for distro %s") %
(cloud.distro.osfamily))
- templater.render_to_file(tpl_fn_name, '/etc/hosts',
+ templater.render_to_file(tpl_fn_name, hosts_fn,
{'hostname': hostname, 'fqdn': fqdn})
elif manage_hosts == "localhost":
@@ -84,10 +88,10 @@ def handle(name, cfg, cloud, log, _args):
" but no hostname was found"))
return
- log.debug("Managing localhost in /etc/hosts")
+ log.debug("Managing localhost in %s", hosts_fn)
cloud.distro.update_etc_hosts(hostname, fqdn)
else:
log.debug(("Configuration option 'manage_etc_hosts' is not set,"
- " not managing /etc/hosts in module %s"), name)
+ " not managing %s in module %s"), hosts_fn, name)
# vi: ts=4 expandtab