web-dev-qa-db-ja.com

puppetが「Puppet.features.rubygems?は非推奨です。必要に応じてアプリケーションのエントリポイントにrubygemsを要求する」と言い続けるのはなぜですか?

かなり小さい(〜10ホスト)パペットのインストールがあり、最近、パペットエージェントの実行ごとに警告メッセージが表示されるようになりました。メッセージは次のとおりです。

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

何が変更されたかは100%わかりません。これはテスト環境にすぎないため、変更管理については、本来あるべきほど厳密ではありません。新しいパペットパッケージがインストールされたか、追加のモジュールが追加された可能性があります-わかりません。

問題は、これを引き起こしている可能性のあるものに関して続けるべき情報がないということです。 /etc/puppet/modulesフォルダーを調べると、rubygemsを使用するモジュールがたくさんあります。

この警告の原因とその修正方法を教えてください。

1
growse

これは 設計による Puppet3.0.1の時点です。

バンドラーがロードされている場合、例: bundlerは、現在のアプリケーション環境でgemを管理するための独自のロジックを備えているため、bundle execpuppetをロードしないでください。また、gem、バージョンなどのセットは、たとえばrvmを介してインストールしたgemとは異なることがよくあります。

Bundlerがロードされていない場合は、古い動作にフォールバックします。これは、puppetコードを呼び出す前にrubygemsがロードされていることを確認するためです。理想的には、これはbin/puppetスクリプトで実行する必要がありますが、ラックセットアップでは機能しないため、rubygemsの読み込みをコマンドラインコードに移動しました。これは事実上、puppetアプリケーションのエントリポイントです。

いくつかの機能、例えばストンプ、Puppet.features.rubygemsを呼び出していましたか?呼び出し元の機能のgemを評価する前にrubygemsをロードするという副作用のためだけです。ジェムローディングシステムが早い段階で正常であることを確認したので、これはもはや必要ありません。

カスタム機能がPuppet.features.rubygems?を呼び出している可能性があるため、非推奨の警告を追加し、(明示的にrubygemsを必要とする)古い動作を保持しました。 puppetがバンドラー環境で正しく機能するようにするには、カスタム機能を変更する必要がある場合があります。

Puppetmasterを3.0.1に更新した場合は、すべてのpuppetエージェントも更新する必要があります。またはその逆。

2
Michael Hampton

puppet.features.rubygemsを呼び出すプロバイダーまたは使用している他の何かがある場合は?次に、この警告が表示されます。過去のpuppetは、ライブラリ内にRuby gemをロードするために使用されていましたが、これは正しい方法ではなく、非推奨になるはずでした。しかし、下位互換性を維持するために、この呼び出しを維持し、警告を表示します。これが正しい方法ではないことを示します。

1
Aditya Patawari