【问题标题】:Chef workstation: Can not find omnibus installation directory for ChefChef 工作站:找不到 Chef 的综合安装目录
【发布时间】:2021-04-26 12:48:17
【问题描述】:

我刚刚在 mac 上安装了 chef-workstation,我的机器上也安装了 rvm。 chef-workstation 已成功安装,但是当我尝试运行 chef exec 命令时,它失败并出现以下错误 -

Traceback (most recent call last):
20: from /Users/tusharhawaldar/.rvm/gems/ruby-2.6.0@base/bin/ruby_executable_hooks:22:in `<main>'
19: from /Users/tusharhawaldar/.rvm/gems/ruby-2.6.0@base/bin/ruby_executable_hooks:22:in `eval'
18: from /Users/tusharhawaldar/.rvm/gems/ruby-2.6.0@base/bin/chef:23:in `<main>'
17: from /Users/tusharhawaldar/.rvm/gems/ruby-2.6.0@base/bin/chef:23:in `load'
16: from /Users/tusharhawaldar/.rvm/gems/ruby-2.6.0@base/gems/chef-dk-3.11.3/bin/chef:25:in `<top (required)>'
15: from /Users/tusharhawaldar/.rvm/gems/ruby-2.6.0@base/gems/chef-dk-3.11.3/lib/chef-dk/cli.rb:73:in `run'
14: from /Users/tusharhawaldar/.rvm/gems/ruby-2.6.0@base/gems/chef-dk-3.11.3/lib/chef-dk/command/base.rb:58:in `run_with_default_options'
13: from /Users/tusharhawaldar/.rvm/gems/ruby-2.6.0@base/gems/chef-dk-3.11.3/lib/chef-dk/command/env.rb:39:in `run'
12: from /Users/tusharhawaldar/.rvm/gems/ruby-2.6.0@base/gems/chef-dk-3.11.3/lib/chef-dk/command/env.rb:39:in `tap'
11: from /Users/tusharhawaldar/.rvm/gems/ruby-2.6.0@base/gems/chef-dk-3.11.3/lib/chef-dk/command/env.rb:41:in `block in run'
10: from /Users/tusharhawaldar/.rvm/gems/ruby-2.6.0@base/gems/chef-dk-3.11.3/lib/chef-dk/command/env.rb:57:in `ruby_info'
 9: from /Users/tusharhawaldar/.rvm/gems/ruby-2.6.0@base/gems/chef-dk-3.11.3/lib/chef-dk/command/env.rb:57:in `tap'
 8: from /Users/tusharhawaldar/.rvm/gems/ruby-2.6.0@base/gems/chef-dk-3.11.3/lib/chef-dk/command/env.rb:60:in `block in ruby_info'
 7: from /Users/tusharhawaldar/.rvm/gems/ruby-2.6.0@base/gems/chef-dk-3.11.3/lib/chef-dk/command/env.rb:60:in `tap'
 6: from /Users/tusharhawaldar/.rvm/gems/ruby-2.6.0@base/gems/chef-dk-3.11.3/lib/chef-dk/command/env.rb:63:in `block (2 levels) in ruby_info'
 5: from /Users/tusharhawaldar/.rvm/gems/ruby-2.6.0@base/gems/chef-dk-3.11.3/lib/chef-dk/command/env.rb:69:in `gem_environment'
 4: from /Users/tusharhawaldar/.rvm/gems/ruby-2.6.0@base/gems/chef-dk-3.11.3/lib/chef-dk/command/env.rb:69:in `tap'
 3: from /Users/tusharhawaldar/.rvm/gems/ruby-2.6.0@base/gems/chef-dk-3.11.3/lib/chef-dk/command/env.rb:70:in `block in gem_environment'
 2: from /Users/tusharhawaldar/.rvm/gems/ruby-2.6.0@base/gems/chef-dk-3.11.3/lib/chef-dk/helpers.rb:124:in `omnibus_env'
 1: from /Users/tusharhawaldar/.rvm/gems/ruby-2.6.0@base/gems/chef-dk-3.11.3/lib/chef-dk/helpers.rb:72:in `omnibus_embedded_bin_dir'
/Users/tusharhawaldar/.rvm/gems/ruby-2.6.0@base/gems/chef-dk-3.11.3/lib/chef-dk/helpers.rb:142:in `omnibus_expand_path': Can not find omnibus installation directory for Chef. (ChefDK::OmnibusInstallNotFound)

当我检查它给出的 omnibus_root 路径时 -

/Users/tusharhawaldar/.rvm/rubies

它正在尝试在omnibus_root_path 中查找bin/embedded/bin 目录,这些目录不存在,因此引发了此错误。

我在omnibus_root_path 手动创建了这些目录,现在我可以运行chef exec 命令,但是当它运行chefspec 时,它现在给出以下错误-

An error occurred while loading ./spec/unit/recipes/initial_packages_spec.rb.
Failure/Error: require 'chefspec'
LoadError:
  cannot load such file -- chefspec
  ./spec/spec_helper.rb:1:in `<top (required)>'
  ./spec/unit/recipes/initial_packages_spec.rb:1:in `<top (required)>'
No examples found.

require 'chefspec' 失败意味着设置中缺少某些内容,我怀疑这与厨师综合有关。

解决与 ChefDK::OmnibusInstallNotFound 相关的错误的正确方法应该是什么?

【问题讨论】:

    标签: ruby chef-infra rvm chefspec chef-workstation


    【解决方案1】:

    好的,所以在尝试了各种方法后,我终于找到了错误的解决方案-

    Can not find omnibus installation directory for Chef. (ChefDK::OmnibusInstallNotFound)
    

    它在路径更新命令下运行 -

    echo 'export PATH="/opt/chef-workstation/embedded/bin:$PATH"' >> ~/.bash_profile && source ~/.bash_profile
    

    来自 - https://www.tutorialspoint.com/chef/chef_workstation_setup.htm

    Omnibus Chef 将通过将 /opt/chef/embedded/bin 目录添加到 .bash_profile 文件中,将 Ruby 和所有必需的 Ruby gem 安装到 /opt/chef/embedded 中。

    【讨论】:

      最近更新 更多