У меня есть функция, которую я пытаюсь запустить у своего кукловода на каждом запуске клиента. Она работает просто отлично на самом кукловод, но это приводит к тому, агент работает сбой на узлах из-за следующей ошибки:Неинициализированная константа на пользовательской функции марионеток
Error: Could not retrieve catalog from remote server: Error 400 on SERVER: uninitialized constant Puppet::Parser::Functions::<my_module>
Я не совсем уверен, почему. Я включил ведение журнала отладки на master через config.ru, но я вижу ту же ошибку в журналах с более полезными сообщениями.
Какие еще шаги можно предпринять, чтобы отладить это?
Обновление: Добавление дополнительных деталей.
Кукольного сообщество, с Foreman связное Кукольник работает на Apache2 с пассажиром/Rack
Оба клиента и мастера работают кукольные 3.7.5
Оба клиента и мастера являются Ubuntu 14,04
Оба клиента и мастер использует Ruby, 1.9.3p484 (2013-11-22 ревизии 43786) [x86_64-Линукс]
Pluginsync включен
Пользовательская функция отлично работает на кукольном мастере, когда ее запускают как часть манифеста кукловода (это сам клиент) или марионетка применяется непосредственно на сервере.
Функция присутствует на клиентах, и когда я обновляюсь для отладки, я вижу, что файл отображается на стороне клиента.
Я не могу вставить функцию здесь, к сожалению, потому что это проприетарный код. Он полагается на aws-sdk, но я подтвердил, что этот рубиновый камень присутствует как на стороне клиента, так и на стороне мастера, с той же версией в обоих местах. Я даже попробовал объединить всю функцию с:
begin
rescue LoadError
end
и иметь тот же результат.
Проверьте, есть ли ваш пользовательский файл функций на клиентах или нет –
странно. функции должны работать только на сервере. Пользовательские функции не запускаются на узлах агента. – ptierno
тоже. попробуйте включить pluginsync https://docs.puppetlabs.com/references/latest/configuration.html#pluginsync – ptierno