傀儡有没有像地图function的东西?

[欢迎任何关于更好的标题的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版本。