puppet 3.2.4: уровень стека слишком глубокий

puppet 3.2.4: уровень стека слишком глубокий

Я работаю над проектом рефакторинга для большого репозитория пользовательских модулей puppet. Это включает обновление с puppet 2.x до 3.2.4. Когда я наконец достиг критической массы и начал тестировать некоторые изменения, я быстро столкнулся со следующей ошибкой:

Info: Retrieving plugin
Info: Loading facts in /etc/puppet/modules/base/lib/facter/elversion.rb
Info: Loading facts in /etc/puppet/modules/base/lib/facter/site.rb
Info: Loading facts in /var/lib/puppet/lib/facter/elversion.rb
Info: Loading facts in /var/lib/puppet/lib/facter/site.rb
Error: Could not retrieve catalog from remote server: Error 400 on SERVER: stack level too deep at /etc/puppet/manifests/nodes.pp:9 on node puppet
Warning: Not using cache on failed catalog
Error: Could not retrieve catalog; skipping run

Просмотрев различные отчеты об ошибках puppet, я решил попытаться упростить проблему. Я сузил проблему до двух классов, определенных следующим образом:

class base::includes { }

и

class prod_secure::base::includes inherits base::includes { }

Узел, который не включает ничего, кроме prod_secure::base::includes, выдает ошибку, указанную выше. Единственное возможно связанное предупреждение, которое я вижу, puppet-lintэто:

WARNING: class inherits across module namespaces on line 1

...но это всего лишь предупреждение, и не должно вызывать сбой puppet при запуске агента, я бы не подумал. Есть идеи? Возможно ли, что схема пространства имен, которую я настроил, не поддерживается puppet?

ОБНОВЛЯТЬ

Я решил пойти дальше в тестировании и изменить имя наследующего класса. Новое определение:

class prod_secure::base2::includes2 inherits base::includes { }

Результат тот же... stack level too deepМне кажется, что эта проблема не имеет никакого отношения к пространству имен.

ОБНОВЛЕНИЕ 2

Во время предыдущего раунда отладки я упустил одну важную деталь:

Wed Sep 11 11:25:09 -0400 2013 Puppet (info): Caching node for puppet
Wed Sep 11 11:25:09 -0400 2013 Puppet (debug): importing '/etc/puppet/manifests/nodes.pp' in environment production
Wed Sep 11 11:25:09 -0400 2013 Puppet (debug): importing '/etc/puppet/manifests/config_file.pp' in environment production
Wed Sep 11 11:25:10 -0400 2013 Puppet (debug): importing '/etc/puppet/modules/prod_secure/manifests/base2/includes2.pp' in environment production
Wed Sep 11 11:25:10 -0400 2013 Puppet (debug): Automatically imported prod_secure::base2::includes2 from prod_secure/base2/includes2 into production
Wed Sep 11 11:25:10 -0400 2013 Puppet (debug): importing '/etc/puppet/modules/prod_secure/manifests/base/includes.pp' in environment production
Wed Sep 11 11:25:10 -0400 2013 Puppet (debug): Automatically imported prod_secure::base::includes from prod_secure/base/includes into production
Wed Sep 11 11:25:10 -0400 2013 Puppet (err): stack level too deep at /etc/puppet/manifests/nodes.pp:9 on node puppet
Wrapped exception:
stack level too deep

Не могу сказать, почему, но он все еще пытался загрузить prod_secure::base::includes, и это была нарушающая запись. После полного удаления этого файла тест прошел. Я возвращаюсь к теории пространства имен...

решение1

Возможно, вам захочется попробовать puppet 3.2.3.

3.2.2 имел#21376похожая проблема, но она была исправлена ​​в 3.2.3, возможно это регрессия

Связанный контент