我reading可以使用Facter::Core::Execution.exec
从自定义事实中执行shell命令。我用以下代码做了一个事实:
Facter.add(:controller_id) do
setcode do
Facter::Core::Execution.exec('/usr/bin/jq -r .device._id /var/lib/mylib/system.json')
end
end
当我在代理上像/usr/bin/jq -r .device._id /var/lib/mylib/system.json
那样独立运行命令时,它会返回一个字符串。但是当我使用puppet agent -t
我的代理人运行事实时,PuppetDb并不包含新事实。
我可以看到代理看到了新的事实代码,因为它告诉我我的代码已经改变了:
注意: /File[/opt/puppetlabs/puppet/cache/lib/facter/controller_id.rb]/content: 内容已更改' {md5} c3567db500497e3586617bfed072ca6d'至 ' {MD5} bb617198c5612eee365b5af8d410d4bc'
但没有错误告诉我为什么事实没有得到保存。有谁知道可能导致这个问题的原因?