【发布时间】:2013-12-06 08:48:42
【问题描述】:
我正在尝试通过 Vagrant/Chef-solo 构建一个基于 Centos 6.4 并使用 vagrant-omnibus (1.1.2) 的开发框,以确保该框使用最新的 Chef(同时创建/整理食谱,那么我可能会冻结版本)。目前它安装的是 11.8.2。
其中一本食谱是使用ruby_build 安装 Ruby 2.0.0-p353,然后在 /usr/local/bin 下创建符号链接,以便在厨师运行完成后所有用户都可以使用 Ruby。它还安装了一些我想在系统范围内强制安装的 gem。
问题是在执行ruby_build 之后使用gem_package 资源会将gem 安装到来自Chef Omnibus 安装的嵌入式ruby 中。到目前为止,我使用gem_binary 选项来解决这个问题,以强制检测系统范围的 Ruby 环境,但这让我开始思考,所以我检查了在 Chef 运行期间使用了哪个 PATH(使用shell_out 打印 PATH到一个文件)并发现它显示以下内容:
/usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/opt/chef/embedded/bin:/opt/chef/embedded/bin:/usr/local/bin
这是从哪里来的?如何/为什么在/usr/local/bin之前添加/opt/chef/embedded/bin?
【问题讨论】:
-
我猜它是在安装 Chef 时配置的,它与 chef-run 没有任何连接。
标签: ruby chef-infra vagrant chef-solo