܍~cs UdZddlmZddlmZddlmZmZddlm Z ddl m Z ddl m Z mZddlmZd Zd gZd d d eeedededgedgdZe ed<eeZdede de dededdf dZdS)z@Update Etc Hosts: Update the hosts file (usually ``/etc/hosts``))Logger)dedent) templaterutil)Cloud)Config) MetaSchema get_meta_doc) PER_ALWAYSaThis 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``, 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 the hosts file entirely, but rather will ensure that a entry for the fqdn with a distribution dependent ip is present (i.e. ``ping `` will ping ``127.0.0.1`` or ``127.0.1.1`` or other ip). .. note:: if ``manage_etc_hosts`` is set ``true``, the contents 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:: for instructions on specifying hostname and fqdn, see documentation for ``cc_set_hostname`` allcc_update_etc_hostszUpdate Etc Hostsz.Update the hosts file (usually ``/etc/hosts``)z # Do not update or manage /etc/hosts at all. This is the default behavior. # # Whatever is present at instance boot time will be present after boot. # User changes will not be overwritten. manage_etc_hosts: false aT # Manage /etc/hosts with cloud-init. # On every boot, /etc/hosts will be re-written from # ``/etc/cloud/templates/hosts.tmpl``. # # The strings '$hostname' and '$fqdn' are replaced in the template # with the appropriate values either from the config-config ``fqdn`` or # ``hostname`` if provided. When absent, the cloud metadata will be # checked for ``local-hostname` which can be split into .. # # To make modifications persistent across a reboot, you must modify # ``/etc/cloud/templates/hosts.tmpl``. manage_etc_hosts: true a! # Update /etc/hosts every boot providing a "localhost" 127.0.1.1 entry # with the latest hostname and fqdn as provided by either IMDS or # cloud-config. # All other entries will be left as is. # 'ping `hostname`' will ping 127.0.1.1 manage_etc_hosts: localhost manage_etc_hosts)idnametitle descriptiondistrosexamples frequencyactivate_by_schema_keysmetarcfgcloudlogargsreturnNctj|dd}|jj}tj|dgr|dkr|dtj||\}}} |s|ddS|d|jjz} | std|jjztj | |||d dS|d kretj||\}}} |s|ddS| d ||j ||dS| d ||dS) NrFtemplate)addonszCDEPRECATED: please use manage_etc_hosts: true instead of 'template'z