I'm trying to implement puppet /etc/hosts
handling using hiera as data
source, but my current implementation requires data duplication
because I could pass only array of strings as $name
to host resource.
Is there any way to avoid such data duplication?
Or maybe it is possible to use templates but keep ability to have local modifications
to /etc/hosts
file?
class hosts ($hosts = hiera("hosts"), $hostsdefs = hiera("hostsdefs")) {
define hostentry( ) {
host{ $name: ip => $hostsdefs[$name][ipaddress],
host_aliases => $hostsdefs[$name][host_aliases] }
}
hostentry{ $hosts: }
}
YAML data for hiera:
----
hosts:
- host1.example.com
- host2.example.com
hostsdefs:
host1.example.com:
ipaddress: 10.0.0.1
host_aliases: host1
host2.example.com:
ipaddress: 10.0.0.2
host_aliases: host2
I was able to find following solution using
create_resource
functionit needs slight modification to my original data (change hash key to
ip
to match resource parameter):