[英]Access hiera scope from Puppet custom type
我正在構建一個自定義類型,我無法從defaultto塊訪問hiera范圍
module Puppet
require 'puppet/parser/functions/hiera'
newtype(:my_type) do
ensurable
newparam(:myparam) do
defaultto { Puppet::Parser::Functions.hiera('myparam') }
end
newproperty(:value) do
desc "Value of the item."
end
end
end
但我明白了
Error: undefined method `hiera' for Puppet::Parser::Functions:Module
我實際上正在使用Puppet 3.8和未來的解析器
作為一種解決方法,我們使用
$my_vals = hiera_hash('mytype_vals')
create_resource(my_type, $myvals, {myparam => hiera('myparam')})
這工作正常,但my_type
對象應該在目錄中的任何地方實例化, myparam
在所有實例中都應該是相同的。 因此,不需要多個默認值聲明。
另一種方法是放置
My_type{
myparam => hiera('myparam')
}
在節點清單中。 這也可以解決問題,但我們正在開發一個模塊,主要清單超出了我們的范圍
您無法從提供者訪問hiera數據,因為提供者運行代理端,而hiera運行主端。
你已經提到你在評論中運行了無主,這是無關緊要的,因為仍然有一個“主”運行編譯Puppet目錄並評估hiera值和一個使用提供程序應用目錄的“代理”運行。
想象一下Puppet作為一系列步驟運行:
因此,最好的辦法是將提供程序包裝在一個define類型中。 使用define類獲取hiera默認值並將它們傳遞給提供程序,同時允許覆蓋默認值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.