获取 Puppet 自定义事实时出现的问题

获取 Puppet 自定义事实时出现的问题

我创建了一个简单的自定义事实:

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

并将其放在这里(在 puppetmaster 上):

/etc/puppet/modules/custom/lib/facter

我正在 Puppet 客户端上测试它:

facter hello

什么也看不见。

而这个命令有效(在 Puppet 客户端上):

facter --puppet hello
Hello, world

检查事实是否同步(在 Puppet 客户端上):

puppetd --test --pluginsync
info: Retrieving plugin
info: Loading facts in /var/lib/puppet/lib/facter/hello.rb
info: Caching catalog for host.example.com

看起来自定义事实已同步。我不明白为什么它无法通过 获得facter

另外,我该如何使用来自 puppetmaster 的这个新事实?我需要基于自定义事实构建一个简单的条件。

例如,我在site.pp(puppetmaster)中添加了以下内容:

$string = "$hello"
notice("Testing custom fact: $string")

再次,在系统日志中没有来自该notice函数的行。

我研究了很多文档,但仍然不知道如何让它工作。如果有人能解决这个问题,我将不胜感激。

谢谢。

配置:Ubuntu Server 12.04、Puppet 2.7.11、facter 1.6.5

答案1

来自 Puppet 的自定义事实仅在 Puppet 运行或使用 标志时使用--puppetfacter如果您不同意,请将自定义事实放在 facter 始终会使用的地方 - 请参阅这里了解详情。

事实应该存在于目录编译中;您可能没有记录通知消息。要将其用作条件:

if $hello == "Hello, world" {
  notify { "found": }
}

相关内容