除非重新安装,否则 Vagrant 不会检测到 chef-solo

除非重新安装,否则 Vagrant 不会检测到 chef-solo

我正在使用 Vagrant 在 Amazon AWS 中测试我的 Chef 食谱,但遇到了一个令人恼火的问题:

我最初以为 Vagrant 会自行安装 chef(就像使用 Virtual Box 作为提供程序时一样),但似乎需要使用 cloud-init 脚本来完成。然而,即使在我通过 cloud-init 成功安装了 chef gem 之后,我仍然收到以下错误:

The chef binary (eitherchef-solo orchef-client) was not found

通过快速谷歌搜索这个错误,我们发现有三个可能的原因:

  • Chef 安装失败
  • 已安装,但目录不在 $PATH 环境变量中
  • 它已安装并位于 $PATH 中,但权限不正确

我登录并仔细检查;chef-solo 和 chef-client 已安装;用户、sudo 和 root 的路径变量均已包含,/usr/local/bin并且权限全部正常。

我设法通过卸载并重新安装 gem 解决了这个问题sudo gem install chef。我不明白为什么这应该可以解决这个问题,而且如果每次我都必须 ssh 进入测试箱并手动安装 gem,那就有点麻烦了。

有谁能提出为什么会发生这种情况?

答案1

我不会chef-client通过 gem 安装。

Opscode 建议通过其“综合”安装程序

一个方便的方法是,通过 Vagrant 插件https://github.com/schisamo/vagrant-omnibus. vagrant-omnibus支持多个供应商,包括vagrant-aws,并且还支持许多不同的分布。

通常很简单:

$ vagrant plugin install vagrant-omnibus 并向您Vagrantfile

答案2

这里遇到了同样的问题...暂时我修复了它:

vagrant ssh -c 'sudo ln -s /opt/chef/bin/* /usr/local/bin/'

但这是一个糟糕的解决方案...我希望尽快找到更好的解决方案。

相关内容