bugfix> ruby > 投稿

Chef12でchef-soloを使用して、 /opt/chef/embedded/bin を想定していますパスはシステムPATHおよび openssl などのさまざまなライブラリに追加されますおよび makedepend そのパスを介して動作します。

同じchef-soloコマンドでChef13にアップグレードすると、次のようなエラーが表示されます-

 * execute[generate ca.pem] action run
================================================================================
Error executing action `run` on resource 'execute[generate ca.pem]'
================================================================================
Errno::ENOENT
-------------
No such file or directory - openssl
Resource Declaration:
      command "openssl x509 -req -in hostname.csr -CA /path/to/ca.pem -CAkey /path/to/ca.key -CAcreateserial -out hostname.cer -days 512 -sha256"

システム情報は-

------------------------
chef_version=13.6.4
platform=oracle
platform_version=7.4
ruby=ruby 2.4.2p198 (2017-09-14 revision 59899) [x86_64-linux]
program_name=chef-solo worker: ppid=627;start=06:32:26;
executable=/opt/chef/bin/chef-solo

現在、現在のPATHには /usr/bin のみがありますおよび他のシステムbinディレクトリ( /opt/chef/embedded/bin は除く) 。

私は enforce_path_sanity を調べましたただし、キッチンファイルは使用しません(参照-https://github.com/chef/chef/issues/3705 )

chef-soloクライアントに埋め込みライブラリを使用させる他の方法はありますか?

回答 1 件
  • この動作はChef Client 13で変更されました。パスの健全性を強制するデフォルトではなくなりました。これは、パスの一部としてchef組み込みbinディレクトリを設定すると、ユーザーが同じバイナリを別の場所にも持っている場合、予期しないバージョンのバイナリが実行される可能性があるためです。

    続行するにはいくつかの方法があります。 opensslパッケージをインストール(推奨)したり、必要なバイナリの絶対パスを指定したり、 enforce_path_sanity を設定したりできます。   true へ  構成ファイルで、この動作を使い慣れたものに戻します( client.rbsolo.rb 、 もしくはそうでないか)。

あなたの答え