木偶3.2.4:堆叠层次太深

我正在为一个定制傀儡模块的大型存储库重构项目。 这包括从puppet 2.x升级到3.2.4。 当我终于达到临界质量并开始testing一些更改时,我迅速遇到以下错误:

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 

看过各种傀儡虫报告后,我决定尝试简化问题。 我把这个问题缩小到了两个等级,其定义如下:

 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 

……但这只是一个警告,不应该让代理人傀儡崩溃,我不会想。 有任何想法吗? 是否有可能我build立的不受木偶支持的命名空间scheme?

UPDATE

我决定继续进行testing,并更改inheritance类的名称。 新的定义是:

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

结果是一样的… stack level too deep 。 在我看来,这个问题与命名空间无关。

更新2

在上一轮debugging期间,我错过了一个显着的细节:

 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,这是违规的条目。 完全删除该文件后,testing通过。 我回到了命名空间理论

你可能想尝试傀儡3.2.3。

3.2.2有#21376类似的问题,但固定在3.2.3,可能是回归