我想要这样的东西:
$ssl_domains = ['dev.mydomain.com']
['admin', 'api', 'web'].each |$site| {
['tom', 'jeff', 'harry'].each |$developer| {
$ssl_domains << "$site.$developer.dev.mydomain.com"
}
}
letsencrypt::certonly { 'dev-cert':
domains => $ssl_domains,
plugin => 'apache',
manage_cron => true,
}
现在这是不可能的,因为 Puppet 的作用域是可变的。如何通过嵌套循环收集数组中的一些变量?
您的尝试很接近,但您使用了错误类型的 lambda。为了避免 Puppet 变量在同一作用域内不可变以及在 lambda 内定义时也不能在 lambda 作用域外使用这两个事实导致的问题,您必须使用右值 lambdahttps://en.wikipedia.org/wiki/Value_(computer_science)#R-values_and_addresses https://en.wikipedia.org/wiki/Value_(computer_science)#R-values_and_addresses。我使用右值 lambda 解决了你的问题map
https://docs.puppet.com/puppet/latest/function.html#map https://docs.puppet.com/puppet/latest/function.html#map.
$site_developer_base = ['admin', 'api', 'web'].map |$site| {
$developer_base = ['tom', 'jeff', 'harry'].map |$developer| {
"${site}.${developer}.dev.mydomain.com"
}
}
如果我做一个notify { $site_developer_base: }
这输出:
Notice: admin.tom.dev.mydomain.com
Notice: admin.jeff.dev.mydomain.com
Notice: admin.harry.dev.mydomain.com
Notice: api.tom.dev.mydomain.com
Notice: api.jeff.dev.mydomain.com
Notice: api.harry.dev.mydomain.com
Notice: web.tom.dev.mydomain.com
Notice: web.jeff.dev.mydomain.com
Notice: web.harry.dev.mydomain.com
证明$site_developer_base
有你想要的数组。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)