Estou trabalhando em um projeto de refatoração para um grande repositório de módulos fantoches personalizados. Isso inclui uma atualização do fantoche 2.x para 3.2.4. Quando finalmente atingi a massa crítica e comecei a testar algumas das alterações, rapidamente encontrei o seguinte erro:
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
Depois de examinar vários relatórios de bugs de fantoches, decidi tentar simplificar o problema. Reduzi o problema a duas classes, definidas como tal:
class base::includes { }
e
class prod_secure::base::includes inherits base::includes { }
Um nó que inclui nada além de prod_secure::base::includes produz a saída de erro listada acima. O único aviso possivelmente relacionado que vejo puppet-lint
é:
WARNING: class inherits across module namespaces on line 1
... mas isso é apenas um aviso, e não deveria travar o fantoche durante a execução de um agente, eu não acho. Alguma ideia? É possível que o esquema de namespace que configurei não seja compatível com o fantoche?
ATUALIZAR
Decidi levar o teste um passo adiante e mudar o nome da classe herdada. A nova definição é:
class prod_secure::base2::includes2 inherits base::includes { }
O resultado é o mesmo... stack level too deep
. Parece-me que esse problema não tem nada a ver com namespace.
ATUALIZAÇÃO 2
Durante a rodada anterior de depuração, perdi um detalhe importante:
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
Não sei dizer por que, mas ele ainda estava tentando carregar prod_secure::base::includes, e essa era a entrada ofensiva. Depois de remover totalmente o arquivo, o teste foi aprovado. Estou de volta à teoria do namespace ...
Responder1
Você pode tentar o fantoche 3.2.3.
3.2.2 tinha#21376problema semelhante, mas foi corrigido em 3.2.3, pode ser regressão