簡體   English   中英

用於設置依賴項值的模塊級別的層次結構

[英]Puppet module level hiera for setting dependency values

我創建了一個puppet模塊,並希望使用(hiera 5)模塊級別的hiera來設置依賴項的值。 我創建了一個hiera.yaml,數據目錄和common.yaml。 但是,模塊的層次結構值似乎沒有傳遞給依賴項,因此我必須在環境級別設置層次結構(這樣,模塊內部就不會包含自身)。

看來,hiera鍵只能使用本地模塊前綴來解析。

我針對的依賴項是fervid / secure_linux_cis,我需要使用“ enforced => false”為其類設置一些層次。 在清單中執行此操作並非100%有效,因為一些類作為重復資源存在。

本質上,我希望在模塊的common.yaml中能夠執行的操作是:

---
my::module::key1:  'value'
secure_linux_cis::redhat7::cis_1_1_2:enforced: false

使用上面的示例,我可以解析my :: module值,但是依賴項secure_linux_cis值將被忽略。

有沒有一種方法可以使模塊級別的層次結構將值傳遞給依賴項?

有沒有一種方法可以使模塊級別的層次結構將值傳遞給依賴項?

不直接,不。 自動數據綁定在要查找其參數的類的上下文中執行Hiera查找,而不是聲明該參數的類。 那么,在您的情況下,將使用模塊secure_linux_cis的層次數據來查詢secure_linux_cis::redhat7::cis_1_1_2類的參數的默認值。

如果您願意冒險使用該類的類資源聲明,那么您應該可以按照以下方式進行操作:

class my::module(
    String $key1
) {
    $cis112_enforced = lookup('secure_linux_cis::redhat7::cis_1_1_2:enforced', Boolean, undef, false)
    class { 'secure_linux_cis::redhat7::cis_1_1_2': enforced => $cis112_enforced }
}

當然,這會帶來參加類資源聲明的所有風險。 我實際上不推薦它。 您可以考慮在環境級別數據的每個節點級別設置參數。 您可能還會考慮查看“角色和配置文件”模式,因為類似資源的類聲明在配置文件類中更有意義。

secure_linux_cis::redhat7::cis_1_1_2::enforced

這應該工作。 您錯過了一個:在您的示例中。

暫無
暫無

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

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