Version information
This version is compatible with:
- Puppet Enterprise >= 3.2.0
- Puppet >= 3.0.0
- Gentoo, RedHat, Debian, Ubuntu, CentOS, Solaris, SLES, SLED, FreeBSD, Darwin, AIX
Start using this module
Add this module to your Puppetfile:
mod 'chrekh-hosts', '2.0.5'
Learn more about managing modules with a PuppetfileDocumentation
hosts
A template-based module to manage /etc/hosts. The main goal for this module is to add entries for localhost and primary address based on existing ip-adresses on existing interfaces. Tested by me on Gentoo, SLES, RedHat, and OS X. But it should work or any Linux and Unix-like OS.
This module unconditionally overwrites your hosts file. You have been warned! There are two reasons that this is template-based.
1) Currently the default host type don't allow multiple IP for a hostname (not even a IPv4 and a IPv6).
2) I prefer to manage files with puppet exclusively, or not at all.
Usage
class { 'hosts': }
Parameters
file
The file to add host entries to.
- Default: '/etc/hosts'
lo_ipv4
List of IPv4 addresses for localhost. Empty list means no entry.
- Default: [ IPv4 loopback addresses ]
lo_ipv6
List of IPv6 addresses for localhost. Empty list means no entry.
- Default: [ IPv6 loopback addresses ]
lo_names
List of names for localhost.
- Default: [ 'localhost' ]
primary_ipv4
List of IPv4 addresses. Empty list means no entry.
- Default: [ IPv4 addresses (not loopback or multicast) ]
primary_ipv6
List of IPv6 addresses. Empty list means no entry.
- Default: [ IPv6 addresses (not loopback, multicast, or linklocal) ]
primary_names
List of names for primary addresses.
- Default: [ $::fqdn, $::hostname ]
one_primary_ipv4
If true, only use the first address from primary_ipv4
- Default: true
one_primary_ipv6
If true, only use the first address from primary_ipv6
- Default: true
entries
A hash with additional host entries to add.
- Default: {}
Example
class { 'hosts':
one_primary_ipv4 => false,
one_primary_ipv6 => false,
entries => { '192.168.2.1' => [ 'foo.bar.org', 'foo' ] }
}
Hiera example
hosts::one_primary_ipv4: false
hosts::one_primary_ipv6: false
hosts::entries:
'::2':
- 'localhost2'
'2001:db8:abba::1':
- 'foo.bar.org'
- 'foo'
##2.0.5
Support for AIX, by Maxime Anciaux.
##2.0.4
Added support for Darwin (OS X)
##2.0.3
Added compatibility for ruby18, with much help from Frank Wall
##2.0.2
Added support for FreeBSD, by Frank Wall
##2.0.1
Workaround for older facter not handling arrays
##2.0.0
Rewriten the code to find the local IP-addresses, to use a custom fact which uses ruby class socket. This is to get better control than core-facts can supply. And to be able to use all addresses configured on an interface instead of just one.
The default is still to use just one address, but that is easy configured with parameters one_primary_ipv4 and one_primary_ipv6