
是否可以從 Puppet 清單中存取 Puppet master 設定變數(如 confdir、masterport 等)?
答案1
有三種方法。
- Jeff McCune 在他的 github 上有一個很好的函數,它就是這樣做的:
模組 Puppet::Parser::Functions newfunction(:getconf, :type => :rvalue, :doc => 2010-09-29 getconf 函數接受一個參數,也就是一個參數的名稱 配置設定並傳回該設定的值。 它類似於 --configprint 命令列參數 返回配置設置,但它公開此信息 到語言。 END_HEREDOC 做 |args| 如果 args.length != 1 那麼 raise Puppet::ParseError, (“錯誤:getconf() 只接受一個參數”) 結尾 木偶[參數[0]] 結束#做|args| 結束 # 模組 # 結束符
將其放入 Puppet 伺服器的 libdir ( ) 中名為「getconf.rb」的檔案中/var/puppet/lib/puppet/parser/functions/getconf.rb
,然後從清單中存取它,例如
# somemanifest.pp
$myvar = getconf("ssldir")
notify {"set ssldir to ${myvar}":}
2. 在 Puppet 2.6 中,它甚至更容易,因為整個設定設定都可以透過 訪問${settings::somevar}
,因此清單很簡單:
# 26manifest.pp
$myvar = $settings::ssldir
notify {"set ssldir to $myvar":}
3.在puppet 0.25中你可以使用內嵌範本:
# 25manifest.pp
$myvar = inline_template("<%= Puppet.settings[:ssldir] %>")
notify {"set ssldir to ${myvar}":}
方法2和3感謝這個關於木偶用戶的帖子