Я получаю сообщение об ошибке при запуске марионетки, в которой используются запросы puppetdb:
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
, Я получил предупреждение что выглядит полезным:
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.», Я получил один файл:
/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
У меня были установлены более старые версии гема, поэтому система вернулась к их использованию.
Чтобы обобщить: При установке как гем, puppetdbquery называется ruby-puppetdb.
puppetdbquery является модулем марионетки, и даже если его нет в вашем файле Puppetfile, он может быть установлен как зависимость одного из других ваших модулей.
Взгляните на каталоги, перечисленные в пути к модулю на вашем мастере марионеток.
Сообщение об ошибке, которое вы цитируете, находится в библиотека / puppetdb / connection.rb в этом модуле.