Por que o boneco continua me dizendo: “Puppet.features.rubygems? está obsoleto. Exigir rubygems no ponto de entrada do seu aplicativo, se você precisar dele?

1

Eu tenho uma instalação de fantoches razoavelmente pequena (~ 10 hosts) e, recentemente, comecei a receber mensagens de aviso em cada agente fantoche executado. A mensagem é:

Info: Loading facts in /etc/puppet/modules/stdlib/lib/facter/root_home.rb
Info: Loading facts in /etc/puppet/modules/stdlib/lib/facter/facter_dot_d.rb
Info: Loading facts in /etc/puppet/modules/stdlib/lib/facter/puppet_vardir.rb
Info: Loading facts in /etc/puppet/modules/firewall/lib/facter/iptables.rb
Info: Loading facts in /etc/puppet/modules/concat/lib/facter/concat_basedir.rb
Info: Loading facts in /var/lib/puppet/lib/facter/root_home.rb
Info: Loading facts in /var/lib/puppet/lib/facter/concat_basedir.rb
Info: Loading facts in /var/lib/puppet/lib/facter/facter_dot_d.rb
Info: Loading facts in /var/lib/puppet/lib/facter/iptables.rb
Info: Loading facts in /var/lib/puppet/lib/facter/puppet_vardir.rb
Debug: catalog supports formats: b64_zlib_yaml dot pson raw yaml; using pson
Warning: Puppet.features.rubygems? is deprecated. Require rubygems in your application's entry point if you need it.
   (at /usr/lib/ruby/vendor_ruby/puppet/util/feature.rb:17:in 'add')
Info: Caching catalog for hostname.example.com

Eu não tenho 100% de certeza do que mudou - isso é apenas um ambiente de teste, por isso não somos tão rigorosos sobre o gerenciamento de alterações como deveríamos ser. Pode ser que um novo pacote de fantoches tenha sido instalado ou um módulo extra adicionado - não sabemos.

O problema é que não tenho informações sobre o que poderia estar causando isso. Grepping através da minha pasta /etc/puppet/modules revela um monte de módulos que usam rubygems.

O que está causando esse aviso e como corrigi-lo?

    
por growse 26.02.2013 / 14:46

2 respostas

2

Isso é por design no Puppet 3.0.1.

If bundler is loaded, e.g. bundler exec puppet, then don’t load rubygems, since bundler has its own logic for managing gems in the current application environment. And the set of gems, versions, etc is often different than what gems you may have installed, via rvm for example.

If bundler is not loaded, fall back on the old behavior, which is to ensure rubygems is loaded before calling any puppet code. Ideally, this should be done in the bin/puppet script, however, that doesn’t work for rack setups, so we moved rubygems loading to the command line code, which is effectively the puppet application entry point.

Several features, e.g. stomp, were calling Puppet.features.rubygems? only for its side-effect of loading rubygems before evaluating the calling feature’s gems. This is no longer necessary now that we ensure the gem loading system is sane early on.

Custom features may be calling Puppet.features.rubygems?, so we’ve added a deprecation warning and preserved the old behavior (of explicitly requiring rubygems). It may be necessary to modify custom features in order to ensure puppet works correctly in a bundler environment.

Se você atualizou seu puppetmaster para a versão 3.0.1, você também deve atualizar todos os seus agentes de marionetes. Ou vice-versa.

    
por 26.02.2013 / 14:57
1

se algum fornecedor ou qualquer outra coisa que você esteja usando, que chame Puppet.features.rubygems? então este aviso é mostrado. No fantoche passado usado para carregar jóias de rubi dentro de bibliotecas que não era o caminho certo e era suposto ser obsoleto. Mas, para manter a compatibilidade com versões anteriores, eles ainda mantêm essa chamada ativa e mostram um aviso para indicar que esse não é o caminho certo.

    
por 26.02.2013 / 14:59