gpt4 book ai didi

ruby - 事实文件已解析但返回空数据集

转载 作者:数据小太阳 更新时间:2023-10-29 08:35:39 25 4
gpt4 key购买 nike

对于我当前的模块,我需要检查是否安装了 php 版本 5 或 7,并为此创建了一个事实。事实文件存储在 facts.d/packageversion.rb 的模块目录中,内容如下:

#!/usr/bin/ruby
require 'facter'

Facter.add(:php_version) do
setcode do
if File.directory? '/etc/php5'
5
else
if File.directory? '/etc/php7'
7
else
0
end
end
end
end

但我不能在我的模块中使用它。在 Puppet 代理日志中,我收到此错误:

Fact file /var/lib/puppet/facts.d/packageversion.rb was parsed but returned an empty data set

我该如何解决这个问题?

最佳答案

facts.d 是外部事实的模块目录。您可以将此文件放入外部事实目录,但预期输出需要是键值对。这并没有发生,所以 Puppet 没有找到该事实的数据集。 https://docs.puppet.com/facter/3.6/custom_facts.html#executable-facts-----unix

您已将此事实写为自定义事实而不是外部事实。因此,它需要放在模块的 lib/facter 目录中。然后它将正常运行。我注意到这一重要信息似乎已从最新的 Facter 文档中删除,这可能会让您感到困惑。

此外,为了清晰和优化,考虑在您的代码中使用 elsif:

if File.directory? '/etc/php5'
5
elsif File.directory? '/etc/php7'
7
else
0
end

关于ruby - 事实文件已解析但返回空数据集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44674079/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com