外部自定义事实不适用于 Puppet

External custom fact not working on Puppet

我正在 运行宁 Facter 3.6 并尝试添加自定义事实。根据 documentation,文件夹 /etc/puppetlabs/facter/fact.d/ 自动用于自定义事实。

我将以下模板放入所述文件夹中 hello.rb:

Facter.add(:hello) do
  setcode do
    "Hello, world"
  end
end

然后我用 puppet agent -t 对我的一名特工强加了一个人偶 运行。

当我查看 PuppetDb 时,我没有看到我的新自定义事实 hello。我错过了添加外部自定义事实的步骤吗?

/etc/puppetlabs/facter/fact.d/ 是客户端节点上自定义事实的位置。如果您希望自定义事实仅出现在该客户端上,则可以将自定义事实添加到该位置。 Pluginsync 还将自动将当前目录的自定义事实传输到该位置。

因此,分发自定义事实的首选方法是将它们放在相应模块的 lib/facter 目录中。然后它们将分发到所有节点,这些节点在其目录环境的任何模块路径中应用了该模块的目录。

请注意此处的具体文档:https://docs.puppet.com/facter/latest/custom_facts.html#using-the-ruby-load-path

另请注意,您正在做的是自定义事实,而不是外部事实。如果你正在做一个外部事实,那么它最好位于相应模块的 facts.d 目录中:https://docs.puppet.com/facter/latest/custom_facts.html#fact-locations.