【问题标题】:Chef cookbook upload fails with: invalid-x-ops-server-api-version厨师食谱上传失败:invalid-x-ops-server-api-version
【发布时间】:2017-09-27 10:32:20
【问题描述】:

主厨服务器:12.0.8

ChefDK (Windows):2.1.11

C:\Data\SVN\dev\trunk\chef-repo>chef --version
Chef Development Kit Version: 2.1.11
chef-client version: 13.2.20
delivery version: master (73ebb72a6c42b3d2ff5370c476be800fee7e5427)
berks version: 6.3.0
kitchen version: 1.17.0
inspec version: 1.33.1

这个问题始于错误:

C:\Data\SVN\dev\trunk\chef-repo>knife cookbook upload acl
C:/opscode/chefdk/embedded/lib/ruby/gems/2.4.0/gems/chef-13.2.20-universal-mingw32/lib/chef/json_compat.rb:35:in `rescue in parse': input must be a string or IO (Chef::Exceptions::JSON::ParseError)
        from C:/opscode/chefdk/embedded/lib/ruby/gems/2.4.0/gems/chef-13.2.20-universal-mingw32/lib/chef/json_compat.rb:33:in `parse'
        from C:/opscode/chefdk/embedded/lib/ruby/gems/2.4.0/gems/chef-13.2.20-universal-mingw32/lib/chef/json_compat.rb:40:in `from_json'
        from C:/opscode/chefdk/embedded/lib/ruby/gems/2.4.0/gems/chef-13.2.20-universal-mingw32/lib/chef/knife.rb:511:in `humanize_http_exception'
        from C:/opscode/chefdk/embedded/lib/ruby/gems/2.4.0/gems/chef-13.2.20-universal-mingw32/lib/chef/knife.rb:455:in `humanize_exception'
        from C:/opscode/chefdk/embedded/lib/ruby/gems/2.4.0/gems/chef-13.2.20-universal-mingw32/lib/chef/knife.rb:446:in `rescue in run_with_pretty_exceptions'
        from C:/opscode/chefdk/embedded/lib/ruby/gems/2.4.0/gems/chef-13.2.20-universal-mingw32/lib/chef/knife.rb:436:in `run_with_pretty_exceptions'
        from C:/opscode/chefdk/embedded/lib/ruby/gems/2.4.0/gems/chef-13.2.20-universal-mingw32/lib/chef/knife.rb:219:in `run'
        from C:/opscode/chefdk/embedded/lib/ruby/gems/2.4.0/gems/chef-13.2.20-universal-mingw32/lib/chef/application/knife.rb:156:in `run'
        from C:/opscode/chefdk/embedded/lib/ruby/gems/2.4.0/gems/chef-13.2.20-universal-mingw32/bin/knife:25:in `<top (required)>'
        from C:/opscode/chefdk/bin/knife:275:in `load'
        from C:/opscode/chefdk/bin/knife:275:in `<main>'

所有食谱都突然发生这种情况。

所以我们在刀命令中添加了详细日志记录:

knife cookbook upload acl -V -V

这表明错误实际上来自 ChefDK 和服务器 API 版本之间的不匹配:

invalid-x-ops-server-api-version: "不支持指定版本 2","min_version":0,"max_version":1

DEBUG: ---- HTTP Status and Header Data: ----
DEBUG: HTTP 1.1 406 Not Acceptable
DEBUG: server: openresty/1.7.10.1
DEBUG: date: Tue, 26 Sep 2017 23:33:12 GMT
DEBUG: content-length: 122
DEBUG: connection: close
DEBUG: x-ops-api-info: flavor=cs;version=12.0.0;oc_erchef=1.6.4
DEBUG: ---- End HTTP Status/Header Data ----
DEBUG: ---- HTTP Response Body ----
DEBUG: {"error":"invalid-x-ops-server-api-version","message":"Specified version 2 not supported","min_version":0,"max_version":1}
DEBUG: ---- End HTTP Response Body -----

这是否意味着 ChefDK v2 与 Chef Server v12 不兼容?

根据他们的文档,Chef 12 支持 API 版本 0 到 3:

https://github.com/chef/chef-rfc/blob/master/rfc041-server-api-versioning.md

【问题讨论】:

  • 我们使用 chef-server-core_12.16.14-1_amd64.deb 升级了 Chef 服务器,现在我们可以上传食谱了。

标签: chef-infra cookbook


【解决方案1】:

这是 ChefDK 2.x 的一些早期版本中的一个错误。从那以后,它在我们所知道的所有情况下都得到了纠正。如果当前的 ChefDK (2.3.4) 仍然出现这种情况,请告诉我们。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-03
    • 2015-03-26
    相关资源
    最近更新 更多