在Chef12上使用chef-solo,我假设/opt/chef/embedded/bin
路径附加到系统路径,并且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客户端使用嵌入式库的任何其他方法?
答案 0 :(得分:3)
此行为在Chef Client 13中为changed。它不再是强制执行路径健全的默认设置。原因是如果用户在其他地方也有相同的二进制文件,那么将chef嵌入式bin目录设置为路径的一部分可能会导致二进制文件的意外版本运行。
有几种方法可以继续。您可以安装openssl软件包(推荐),您可以提供所需二进制文件的绝对路径,或者您可以在配置文件中将enforce_path_sanity
设置为true
以将此行为恢复为您熟悉的使用(client.rb
,solo.rb
或其他方式。