根据这个木偶实验室的文章,我可以从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 ,显然。
另外,请注意,使用比主站更新的代理通常不受支持。