Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 18 additions & 14 deletions cloudinit/config/cc_update_etc_hosts.py
Original file line number Diff line number Diff line change
Expand Up @@ -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::
Expand Down Expand Up @@ -59,6 +60,9 @@

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:
Expand All @@ -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":
Expand All @@ -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
1 change: 1 addition & 0 deletions tools/.github-cla-signers
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ bmhughes
candlerb
cawamata
ciprianbadescu
citrus-it
dankenigsberg
ddymko
dermotbradley
Expand Down