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
--verbose
を指定してpuppetmasterを実行すると、 警告 が表示されます。これは役に立ちます。
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
がインストールされていないようです。
それがどこから来たのか、そしてそれをダウングレードする方法を見つける方法はありますか?
ファイルを追跡するために(ソースのリンクについて ssmの回答 に感謝します)、私は次のことを行いました。
find / -name connection.rb
次に、「PuppetDBバージョン<3.0を使用しているようです。」を含む結果を取得すると、1つのファイルになりました。
/var/lib/gems/2.1.0/gems/Ruby-puppetdb-2.1.1/lib/puppetdb/connection.rb
Puppetdbqueryについては言及されていないため、最初は混乱しましたが、 リポジトリ を詳しく調べると、含まれているgemspecがpuppetdbqueryではなく「Ruby-puppetdb」と呼ばれていることがわかりました。したがって、修正は次のように実行されました。
gem uninstall Ruby-puppetdb --version 2.1.1
古いバージョンのgemをインストールしていたので、システムは代わりにそれらを使用するようになりました。
要約すると:gemとしてインストールされた場合、puppetdbqueryはRuby-puppetdbと呼ばれます。
puppetdbquery はpuppetモジュールであり、Puppetfileにない場合でも、他のモジュールの1つの依存関係としてインストールされる場合があります。
Puppetmasterのmodulepathにリストされているディレクトリを確認してください。
引用するエラーメッセージは、そのモジュールの lib/puppetdb/connection.rb にあります。