我刚刚将 puppet 环境从3.4.2
升级到3.4.3
。通过puppetlabs的apt repos。我正在升级代理商和主人。执行代理运行会导致以下错误:
Info: Retrieving pluginfacts
Debug: Failed to load library 'msgpack' for feature 'msgpack'
Debug: file_metadata supports formats: pson yaml b64_zlib_yaml raw
Debug: Failed to load library 'msgpack' for feature 'msgpack'
Debug: file_metadata supports formats: pson yaml b64_zlib_yaml raw
Error: /File[/var/lib/puppet/facts.d]: Could not evaluate: Could not retrieve information from environment production source(s) puppet://<puppetserver>/pluginfacts
Debug: Finishing transaction [...]
尽管如此,我从 master 中检索目录,因此 代理运行仍然有效,并且似乎可以执行它应该执行的操作。 (或者说,如果出现与错误消息相关的错误,我实际上无法确定。)
但是,我想摆脱错误信息。
我在代理和主上仔细检查了puppet --version
的木偶版本。我使用乘客为puppetmaster。 Facter 的版本为2.0.1
。 那么我错过了什么?
添加:使用先前版本3.4.2
运行代理时,将不会显示错误消息。
有什么想法吗?非常感谢您的支持。
ITL
答案 0 :(得分:3)
这是由于这个错误:https://tickets.puppetlabs.com/browse/PUP-3655
问题是,要使pluginsync正常工作,环境中必须至少有一个模块,其中facts.d
目录直接位于模块的顶层。
我的工作是在我们的一个主要内部模块的顶层创建一个可执行facts.d/README
文件,其中包含以下内容:
#!/bin/bash
# This directory is where external fact scripts would go, if we had any. This
# directory exists only because with directory environments puppet will
# complain if there isn't a single module in an environment that doesn't have a
# facts.d directory.
echo "bug=https://tickets.puppetlabs.com/browse/PUP-3655"
exit 0
答案 1 :(得分:1)
昨天发布了Facter 2.0.1。那是你的问题。降级到1.7.x,你应该没事。
答案 2 :(得分:1)
你在这里遇到的问题来自于更新,以及你在版本3.X上使用puppet私有事实的方式2.X.当你想要分发外部事实时(这是我的情况)。
正如在facter 2.2文档中所述,您需要将facter文件夹重新定位到模块树中:
分发外部事实的最佳方法是使用pluginsync 在Puppet 3.4 / Facter 2.0.1中添加了对它们的支持。添加外部 你的木偶模块的事实,只需将它们放入 ModulePath进行/ MODULE / facts.d /.
因此,在旧版本中,外部事实的路径是:
ModulePath进行/ MODULE / LIB / facter / external_fact.rb
如果您将其更改为:
ModulePath进行/ MODULE / facts.d / external_fact.rb
然后你不会再遇到这个问题了。
此致
- rustx
答案 3 :(得分:0)
今天抓到同样的错误,重新配置我的木偶大师:
Info: Retrieving pluginfacts
Error: /File[/var/lib/puppet/facts.d]: Could not evaluate: Could not retrieve information from environment production source(s) puppet://puppet/pluginfacts
Info: Retrieving plugin
Error: /File[/var/lib/puppet/lib]: Could not evaluate: Could not retrieve information from environment production source(s) puppet://puppet/plugins
Info: Caching catalog for puppet
Info: Applying configuration version '1405577010'
以下是我的版本:
grundic@puppet:~$ puppet --version
3.6.2
grundic@puppet:~$ facter --version
2.1.0
重启守护进程帮助了我(我在乘客身后使用木偶大师):
grundic@puppet:~$ sudo service apache2 restart
* Restarting web server apache2
... waiting ...done.
grundic@puppet:~$ sudo puppet agent --test --verbose
Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Caching catalog for puppet
Info: Applying configuration version '1405607835'
Notice: Dummy message for debugging
Notice: /Stage[main]/Main/Notify[Dummy message for debugging]/message: defined 'message' as 'Dummy message for debugging'
Notice: Finished catalog run in 0.06 seconds
答案 4 :(得分:0)
我有同样的犯罪者在centos 6.5上运行傀儡3.6.2。 将puppet,puppet-server,facter和hiera降级到之前的版本(3.6.1,2.0.2,1.3.3)&#39;问题..
答案 5 :(得分:0)
正如Grundic所说,重启大师。
然后将证书清理到主服务器上的puppet代理并删除代理上的证书。然后重新运行puppet agent -t和puppet cert sign --all。一切都会消失。这对我有用。
答案 6 :(得分:0)
for path in `ls */lib/facter | grep :$ | sed "s,:,,"`;
do MODULE=`echo $path | sed "s,/lib/facter,,"`;
cd $MODULE && ln -s lib/facter facts.d && cd .. ;
done
这些部分特别重要
`ls */lib/facter | grep :$ | sed "s,:,,"`
`echo $path | sed "s,/lib/facter,,"`
此代码段应该从/ etc / puppet / modules以及/ etc / puppet / environments中每个环境的模块/路径运行。