7

我刚刚将我的puppet环境从升级3.4.23.4.3. 通过 puppetlabs 的 apt repos。我正在升级agent (s) 和master。执行代理运行会导致以下错误:

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我用on agentmaster仔细检查了 puppet 的版本。我使用乘客作为 puppetmaster。因素有版本2.0.1那么我错过了什么?

补充:使用旧版本运行代理3.4.2时,不会出现错误消息。

有任何想法吗?非常感谢您的支持。

国际交易日志

4

7 回答 7

5

这是由于这个错误: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
于 2015-05-26T20:49:05.163 回答
1

您在这里遇到的问题来自事实更新,以及当您想要分发外部事实时(这是我的情况),您在版本 3.X 和事实 2.X 上使用带有 puppet 的私有事实的方式。

正如facter 2.2文档中所说,您需要将您的facter文件夹重新定位到模块树中:

分发外部事实的最佳方式是使用 pluginsync,它在 Puppet 3.4/Facter 2.0.1 中增加了对它们的支持。要将外部事实添加到您的 puppet 模块,只需将它们放在 MODULEPATH/MODULE/facts.d/ 中。

因此,在旧版本中,外部事实的路径是:

MODULEPATH/MODULE/lib/facter/external_fact.rb

如果您将其更改为:

MODULEPATH/MODULE/facts.d/external_fact.rb

然后你就不会再遇到这个问题了。

问候

-- 锈x

于 2014-09-21T15:34:54.153 回答
0

昨天发布了 Facter 2.0.1。那是你的问题。降级到 1.7.x,你应该没问题。

于 2014-04-02T17:12:00.060 回答
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

重新启动守护进程帮助了我(我在乘客后面使用 puppet master):

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
于 2014-07-17T14:43:16.100 回答
0

我在 centos 6.5 上运行 puppet 3.6.2 时遇到了同样的错误。将 puppet、puppet-server、facter 和 hiera 降级到以前的版本(3.6.1、2.0.2、1.3.3)“解决”了这个问题。

于 2014-07-24T14:54:38.913 回答
0

正如Grundic所说,重启master。

然后清理 master 上的 puppet 代理的证书,并删除代理上的证书。然后重新运行 puppet agent -t 和 puppet cert sign --all。这一切都会过去的。这对我有用。

于 2014-07-28T23:19:01.773 回答
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 中每个环境的 modules/ 路径运行。

于 2015-03-23T03:37:16.663 回答