从ruby中访问facter变量

时间:2017-04-28 09:33:20

标签: ruby scope puppet facter

是否可以从ruby中访问一个facter变量?

if %{virtual} == 'virtualbox'
  result = 'changeit'
else
  result = c[1]['passwd']
end

所以$::virtual是facter中的一个变量。

1 个答案:

答案 0 :(得分:0)

该方法取决于您使用的Ruby函数API。如果您正在使用当前的4.x API(您的函数位于lib/puppet/functions/*.rb),那么:

if closure_scope['facts']['virtual'] == 'virtualbox'

文档:Writing functions in Ruby: Accessing Puppet variables

或者,如果您正在使用旧版3.x兼容API(您的功能位于lib/puppet/parser/functions/*.rb),那么:

if lookupvar('virtual') == 'virtualbox'

文档:The legacy Ruby functions API: Using Facts and Variables