gpt4 book ai didi

arrays - puppet 在循环中添加数组元素

转载 作者:行者123 更新时间:2023-12-01 08:51:23 25 4
gpt4 key购买 nike

我想要这样的东西:

$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 中定义)这两个事实导致的问题,您必须使用右值 lambda https://en.wikipedia.org/wiki/Value_(computer_science)#R-values_and_addresses 。我使用右值 lambda 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 具有您想要的数组。

关于arrays - puppet 在循环中添加数组元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41041549/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com