Puppet

在工頭中禁用 Puppet ENC 部分

  • July 16, 2015

我找了好幾天了,我很沮喪。我們想使用 Foreman 作為監控和配置工具。我們想停用 Foreman 的 ENC 並僅使用 Hiera。我怎麼能做到這一點?

至於為什麼:

  1. 我的老闆想要那樣。
  2. Foreman 無法解析來自 Hiera 的參數

例子:

定義 repo_file_manager (
$repository_url = "http://${yum_client::lib::repository_server}/repos/${name}/",
$ensure = '現在',
$gpgcheck = '0',
$啟用 = '1') {

$repoconfdir = '/etc/yum.repos.d'

文件 { "${repoconfdir}/${name}.repo":
確保 => $確保,
組=>“根”,
模式 => '0644',
所有者 => 'root',
要求 => 文件['/etc/yum.repos.d'],
內容 => 模板(“yum_client/repofile.erb”),
}
}

${yum_client::lib::repository_server}返回 nil,但是當我這樣做時hiera(yum_client::lib::repository_server),我得到了正確的結果。

Foreman 只是一個 ENC,這意味著它會在被要求時向 Puppet Master 發送一組 YAML 格式的類和變數。

如果變數在 Hiera 中,並且您沒有使用 Foreman 覆蓋它,則應自動使用 Hiera 中的變數,因為它不會出現在 YAML 輸出中。在較新版本的 Foreman 中,您實際上可以做到這兩點:使用 Hiera 的預設設置,但仍然可以使用 Foreman 覆蓋該值。

至於您的問題:iiuc,您正在創建的是一個已定義的類型,它與 Hiera 的數據綁定屬性不同。您可能想要做的是呼叫 hiera 函式而不是引用定義類型中的“原始”變數。這可能需要稍微重寫該類型,但無論您是否使用 Foreman 作為 ENC,它都應該可以正常工作。

引用自:https://serverfault.com/questions/706142