从 ruby 中访问因子变量

Access facter variable from within ruby

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

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

所以$::virtual实际上是一个变量

方法取决于您使用的 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