[英]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.