knife 忽略 ~/.chef/knife.rb 中的 client_key

knife 忽略 ~/.chef/knife.rb 中的 client_key

我收到类似错误

WARN: Failed to read the private key /etc/chef/client.pem: #<Errno::ENOENT: No such file or directory @ rb_sysopen - /etc/chef/client.pem>
ERROR: Your private key could not be loaded from /etc/chef/client.pem
Check your configuration file and ensure that your private key is readable

尽管~/.chef/knife.rb包含

client_key "#{ENV['HOME']}/.chef/chicks.pem"

这应该会让它寻找不同的文件。我运行了knife一下strace,发现它正在读取/home/chicks/.chef/knife.rb,但它随后寻找/etc/chef/client.pem并且从不尝试打开~/.chef/chicks.pem。我发现 Mint 17.3 和 Ubuntu 16.04LTS 也存在同样的问题。我尝试过 ChefDK 0.10.0 和 0.14.25,但问题相同。使用显式路径没有帮助。还有什么需要寻找或尝试的?

答案1

从 Confluence 剪切并粘贴示例配置会导致 UTF-8 字符,从而knife.rb不会knife发出任何警告。(呸。)将 转换knife.rb为 ASCII 可修复此问题:

cd ~/.chef
iconv -c -f utf8 -t ascii knife.rb > clean-knife.rb
mv clean-knife.rb knife.rb

这解决了我的问题!

相关内容