Maybe nowhere else. That hosts entry is bogus on at least two grounds:
- You should not be pointing the host's primary name at a loopback address. If you list it in /etc/hosts at all, it should be pointed at the IP address assigned to the host's primary network interface.
- The canonical name field of each entry (the second) should hold the fqdn. The unqualifed name, if listed, should be among the aliases (subsequent fields).
Example:
192.168.0.42 host.mydomain.com host
127.0.0.1 localhost.localdomain localhost
Traditionally, the host's own name needed to be first in /etc/hosts, as that was how machines determined their own names. That might still be the case for some UNIX flavors, but I don't think it's common any longer. It doesn't work well for machines with dynamic IPs, so many systems use an alternative means to record a machine's hostname. On RedHat-family Linuxes, at least, that's the 'HOSTNAME' entry in file /etc/sysconfig/network. Machines that employ such a mechanism do not normally require a machine's own hostname to be listed in /etc/hosts at all.
It may be illuminating to run the 'dnsdomainname' command on one of the affected machines. If it does not give the correct fully-qualified name for the machine, then the machine is configured wrongly. Such an error is an initial provisioning / deployment problem. You should assign the machine its name before first firing up the Puppet agent on it.
John