![获取 Puppet 自定义事实时出现的问题](https://linux22.com/image/607422/%E8%8E%B7%E5%8F%96%20Puppet%20%E8%87%AA%E5%AE%9A%E4%B9%89%E4%BA%8B%E5%AE%9E%E6%97%B6%E5%87%BA%E7%8E%B0%E7%9A%84%E9%97%AE%E9%A2%98.png)
我创建了一个简单的自定义事实:
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 运行或使用 标志时使用--puppet
。facter
如果您不同意,请将自定义事实放在 facter 始终会使用的地方 - 请参阅这里了解详情。
事实应该存在于目录编译中;您可能没有记录通知消息。要将其用作条件:
if $hello == "Hello, world" {
notify { "found": }
}