0

这个问题是在从 ChefDK 3.2.30 升级到 4.2.0 后发现的,并且在升级之前一切正常(包括这两个命令)。

“刀节点列表”的完整错误:

C:/opscode/chefdk/embedded/lib/ruby/gems/2.6.0/gems/rbvmomi-1.13.0/lib/rbvmomi/vim.rb:8: warning: Win32API is deprecated after Ruby 1.9.1; use fiddle directly instead
Traceback (most recent call last):
8: from C:/opscode/chefdk/bin/knife:359:in <main>' 7: from C:/opscode/chefdk/bin/knife:359:inload'
6: from C:/opscode/chefdk/embedded/lib/ruby/gems/2.6.0/gems/chef-15.1.36-universal-mingw32/bin/knife:24:in <top (required)>' 5: from C:/opscode/chefdk/embedded/lib/ruby/gems/2.6.0/gems/chef-15.1.36-universal-mingw32/lib/chef/application/knife.rb:162:inrun'
4: from C:/opscode/chefdk/embedded/lib/ruby/gems/2.6.0/gems/chef-15.1.36-universal-mingw32/lib/chef/knife.rb:221:in run' 3: from C:/opscode/chefdk/embedded/lib/ruby/gems/2.6.0/gems/chef-15.1.36-universal-mingw32/lib/chef/knife.rb:440:inconfigure_chef'
2: from C:/opscode/chefdk/embedded/lib/ruby/gems/2.6.0/gems/chef-15.1.36-universal-mingw32/lib/chef/knife.rb:185:in load_config' 1: from C:/opscode/chefdk/embedded/lib/ruby/gems/2.6.0/gems/chef-config-15.1.36/lib/chef-config/workstation_config_loader.rb:72:inload'
C:/opscode/chefdk/embedded/lib/ruby/gems/2.6.0/gems/chef-config-15.1.36/lib/chef-config/mixin/credentials.rb:92:in load_credentials': undefined local variable or methodcredentials_file' for #<ChefConfig::WorkstationConfigLoader:0x000000000c311e68> (NameError)

“厨房会聚”的完整错误:

------Exception-------
Class: Kitchen::ClientError
Message: Could not load the 'chef_zero' provisioner. Error: undefined local variable or method `credentials_file' for #<ChefConfig::WorkstationConfigLoader:0x0000000006f176a0>
Did you mean?  credentials_profile
credentials_found
@credentials_found
----------------------
Please see .kitchen/logs/kitchen.log for more details
Also try running kitchen diagnose --all for configuration
4

1 回答 1

0

我们发现这种情况下的问题是请求的配置文件无效。

配置文件可以使用 CHEF_PROFILE 环境变量设置,也可以在用户主目录 .chef 中名为“context”的文件中设置(Linux 上为 ~/.chef,Windows 上为 C:\Users\username.chef)。

如果指定了“default”以外的配置文件,则 ChefDK 会在同一目录中查找名为“credentials”的文件。然后它将解析该文件并查找与配置文件名称匹配的部分。

如果它没有找到匹配的配置文件,那么它将产生类似于问题中的错误。

为了解决该用户的问题,我们将“context”文件的值更改为“default”(不带引号),然后一切又开始工作了。

有几种可能的解决方案,哪一种最适合您取决于问题出在哪里

  • 如果配置文件名称有效,则将适当的部分添加到 ~/credentials 文件中
  • 如果 CHEF_PROFILE 环境变量的值有问题,请将其更改为“默认”或有效名称
  • 如果 ~/context 文件的值是问题,那么您可以删除它,或者将其中的值更改为有效的配置文件(注意:在删除或进行更改之前始终备份文件)

我通过浏览 C:/opscode/chefdk/embedded/lib/ruby/gems/2.6.0/gems/chef-config-15.1.36/lib/chef 中的代码找到了上面列出的详细信息-config/mixin/credentials.rb(这是最初抛出异常的地方)

于 2019-08-27T20:00:34.493 回答