[欢迎任何关于更好的标题的build议]
无论好坏,我现在有一个像这样的数据结构(yaml)
servers: server1.example.com: private_ip: 10.0.0.1 public_ip: 22.33.44.1 server2.example.com: private_ip: 10.0.0.2 public_ip: 22.33.44.2 global_roles: nagios: - server1
– server2
我可以把它拉进傀儡,做一些事情:
$nagios_monitor = $global_roles['nagios'][0] $private_ip["${nagios_monitor}.example.com"]['private_ip']
我想要的是一种获取所有列出的nagios服务器的私有IP数组的方法。 有没有一个好的方法来做到这一点与我现有的数据结构?
如果数据结构需要改变,为了更好地工作,我们也欢迎将这些数据提供给木偶的build议。 我怀疑这样的改变会让生活变得更容易,但是有一些现有的代码需要改变,我真的不想要任何错误的步骤。
是的,傀儡有一个地图function。 https://docs.puppet.com/puppet/latest/reference/function.html#map
像这样的东西可能是你想要做的:
$nagios_servers = $global_roles['nagios'] $ip_addresses = $nagios_servers.map |$server| { $private_ip["${server}.example.com"]['private_ip'] }
它需要3.8版本的未来parsing器,自动包含4.0版本。