Puppet:查找和合并 uniq hiera 哈希



我有一个 hiera 结构,它为 apache 模块提供证书名称,如下所示:

profiles::web_host::vhosts::params:
'subdomain.domain.de'
serverName: 'subomain.domain.de'
certificateName: 'wildcard.domain.de'
'subdomain2.domain.de'
serverName: 'subomain2.domain.de'
certificateName: 'wildcard.domain.de'

在我的网络服务器配置文件中,有一个参数的查找

$vhostParams = lookup("profiles::web_host::vhosts::params")

然后我循环遍历参数:

$vhostParams.each |$key, $vhOptions| { 
if $vhOptions['certificateName'] {
$certificateName = $vhOptions['certificateName']
}
}

问题是:一旦您对多个子域使用通配符证书(按预期(,变量$certificateName就会有一个重复的定义。

我尝试将 .unique 应用于变量以及在查找$vhostParamsMerged1 = lookup('profiles::web_host::vhosts::params',Hash,'uniq',undef)期间没有取得多大成功。

如果你能帮忙,我会很高兴的。

亲切问候 托马斯

感谢大家研究这个:) 我病了一段时间,很抱歉我迟到了的反馈。 你是对的,我应该发布整个个人资料,但它包含一些我不想公开的主机名。

我通过解决方法解决了它。 现在,根据所使用的虚拟主机将同一证书放入许多文件中。

如果有人有如何使用木偶函数的解决方案.each 循环遍历 hiera,创建一个数组/哈希并仅使用唯一值 - 我仍然感兴趣。

对于有类似问题的每个人: 像往常一样 - 你只需要让你的所有资源独一无二。

就我而言,代码现在看起来像这样(每次用于 ssl 证书和密钥(:

$vhostParams.each |$key, $vhOptions| { 
[...]
#
# Certificate(s)
#
file { "Web Server vhost $defaultSslZone SSL Key for ${key}":
# notifies the apache service to do a reload
notify => Class['apache::service'],
[...]
apache::vhost { "${key}":
ssl                  => true,
ssl_cert             => "${cCERTS_BASE_DIR}/${sslZone}-${key}_cert.pem",
ssl_key 
}
=> "${cCERTS_BASE_DIR}/${sslZone}-${key}_key.pem",

相关内容

  • 没有找到相关文章

最新更新