Facter – 自定义事实,由Puppet代理调用时返回空数据集

根据这个木偶实验室的文章,我可以从shell脚本创build自定义事实。

我创build了一个返回一个事实的bash脚本,它被打包在一个模块facts.d目录中。 该模块通过ENC级别包含在目标系统中。 当被目标上的puppet代理调用时,它返回一个空集合,当在代理上手动运行时,它正确地返回事实。 该脚本具有对主服务器的执行权限,但不具有代理服务器上的权限。

我看到一个与权限和文件types有关的bug报告,但那是windows,应该在puppet版本3中修复。

我究竟做错了什么?

ENC定义:

--- classes: facttest:

Shell脚本:

#!/bin/bash echo "test_fact1=$(hostname)"

权限:

master: -rwxr-xr-x 1 root root ... modules/facttest/facts.d/testfact.sh agent: -rw-r--r-- 1 root root ... /var/lib/puppet/facts.d/testfact.sh

代理消息:

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

版本信息: Puppet master: 3.5.1 (Debian) Facter master: 2.0.1 Puppet agent: 3.6.1 (OpenSUSE) Facter agent: 2.0.1

这实际上是木偶3.6一个bug ,显然。

另外,请注意,使用比主站更新的代理通常不受支持。