簡體   English   中英

Puppet:查找和合並 uniq hiera 哈希

[英]Puppet: lookup and merge uniq hiera hashes

我有一個 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)沒有太大成功。

如果你能幫忙,我會很高興。

親切的問候,托馬斯

感謝大家對此進行調查 :) 我病了一段時間,很抱歉我遲到的反饋。 你說得對,我應該張貼整個配置文件,但它包含一些我不想公開的主機名。

我通過解決方法解決了它。 現在,基於所使用的虛擬主機,相同的證書被放入許多文件中。

如果有人有解決方案如何使用 puppet 函數 .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",

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM