执行knife ssl check连接manage.chef.io失败,请求解决报错
解决
knife ssl check执行时的uninitialized class variable @@schemes in URI错误 这个错误是由于proxifier gem版本(1.0.3)与Ruby 3.1不兼容导致的,Ruby 3.0+对URI模块的内部结构做了调整,移除了@@schemes类变量,而旧版本proxifier仍在尝试引用它。以下是几种可行的解决办法:
方案1:升级proxifier到兼容版本
直接在Chef Workstation的嵌入式Ruby环境中安装兼容Ruby 3.1的proxifier版本(1.1.0及以上):
cd /opt/chef-workstation/embedded && gem install proxifier -v 1.1.0
完成后重新执行knife ssl check即可。
方案2:手动修改proxifier的代码(临时修复)
如果无法升级gem,可直接修改报错的文件:
- 编辑socks.rb文件:
vi /opt/chef-workstation/embedded/lib/ruby/gems/3.1.0/gems/proxifier-1.0.3/lib/uri/socks.rb
- 找到第8行的
URI.scheme_list[:SOCKS] = URI::SOCKS,替换为:
URI.register_scheme('SOCKS', URI::SOCKS)
- 保存文件后重新执行
knife ssl check。
方案3:临时禁用代理环境变量
如果你的环境中设置了HTTP/HTTPS代理但实际不需要通过代理连接manage.chef.io,可临时取消代理变量后重试:
unset HTTP_PROXY HTTPS_PROXY knife ssl check
内容的提问来源于stack exchange,提问作者shivam rawat
相关产品推荐
相关产品推荐

