Puppet
在工頭中禁用 Puppet ENC 部分
我找了好幾天了,我很沮喪。我們想使用 Foreman 作為監控和配置工具。我們想停用 Foreman 的 ENC 並僅使用 Hiera。我怎麼能做到這一點?
至於為什麼:
- 我的老闆想要那樣。
- 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,它都應該可以正常工作。