Puppet

如何降級 puppetdbquery?

  • January 13, 2016

我在使用 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 在有問題的機器上不可用,所以我正在考慮 downgrading puppetdbquery。但是,我找不到它的安裝位置/方式。到目前為止,我已經檢查過dpkg(我正在執行 Debian Jessie)gemlibrarian-puppet,但它們似乎都沒有安裝puppetdbquery.

無論如何要找到它的來源以及如何降級它?

為了追踪文件(感謝ssm對源連結的回答),我做了:

find / -name connection.rb

然後我對那些包括“看起來你正在使用 PuppetDB 版本 < 3.0。”的結果進行 grep,我最終得到了一個文件:

/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

puppetdbquery是一個 puppet 模組,即使它可能不在您的 Puppetfile 中,它也可能作為您其他模組之一的依賴項安裝。

查看 puppet master 的模組路徑中列出的目錄。

您引用的錯誤消息位於該模組的lib/puppetdb/connection.rb中。

引用自:https://serverfault.com/questions/745294