我在使用 puppetdb 查询的 puppet 运行时遇到错误:
Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Loading facts
Error: Could not retrieve catalog from remote server: Error 400 on SERVER: undefined method `server_urls' for #<Puppet::Util::Puppetdb::Config:0x00000003cd66c8> at /etc/puppet/local-modules/monitoring/manifests/init.pp:14 on node hostname.goes.here
Warning: Not using cache on failed catalog
Error: Could not retrieve catalog; skipping run
通过运行 puppetmaster --verbose
,我得到了一个警告看起来很有帮助:
Warning: It looks like you are using a PuppetDB version < 3.0.
This version of puppetdbquery requires at least PuppetDB 3.0 to work.
Downgrade to puppetdbquery 1.x to use it with PuppetDB 2.x.
PuppetDB 3.0 在相关机器上不可用,因此我正在考虑降级puppetdbquery
。但是,我找不到它在哪里/如何安装。到目前为止,我已经检查过dpkg
(我正在运行 Debian Jessie)gem
和librarian-puppet
,但似乎都没有安装puppetdbquery
。
有没有办法找到它的来源以及如何降级它?
答案1
puppetdb查询是一个 puppet 模块,即使它可能不在你的 Puppetfile 中,它也可能作为你的其他模块之一的依赖项进行安装。
查看你的 Puppet Master 上的 modulepath 中列出的目录。
您引用的错误消息位于lib/puppetdb/连接.rb在那个模块里。
答案2
为了找到该文件(感谢ssm 的回答对于链接来源),我做了:
find / -name connection.rb
然后我 grep 了包含“看起来您正在使用 PuppetDB 版本 <3.0。”的结果,最终得到一个文件:
/var/lib/gems/2.1.0/gems/ruby-puppetdb-2.1.1/lib/puppetdb/connection.rb
一开始这让我很困惑,因为它没有提到 puppetdbquery,但仔细检查后存储库,我发现它包含的 gemspec 称自己为“ruby-puppetdb”,而不是 puppetdbquery。因此,修复方法是运行:
gem uninstall ruby-puppetdb --version 2.1.1
我安装了旧版本的 gem,所以系统恢复使用那些版本。
总结一下: 当作为 gem 安装时,puppetdbquery 被称为 ruby-puppetdb