我正在尝试/etc/hosts
使用希拉作为数据源,但我当前的实现需要数据重复,因为我只能传递字符串数组$name
作为主持人资源。
有什么方法可以避免这种数据重复吗?或者是否可以使用模板但保留对/etc/hosts
文件进行本地修改的能力?
class hosts ($hosts = hiera("hosts"), $hostsdefs = hiera("hostsdefs")) {
define hostentry( ) {
host{ $name: ip => $hostsdefs[$name][ipaddress],
host_aliases => $hostsdefs[$name][host_aliases] }
}
hostentry{ $hosts: }
}
hiera 的 YAML 数据:
----
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
答案1
我能够使用create_resource
函数找到以下解决方案
class hosts ($hosts = hiera_hash("hosts")) {
create_resources( 'host', $hosts )
}
它需要对我的原始数据进行轻微的修改(将哈希键更改为ip
匹配资源参数):
----
hosts:
host1.example.com:
ip: 10.0.0.1
host_aliases: host1
host2.example.com:
ip: 10.0.0.2
host_aliases: host2