首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Berksfile源代码不识别自托管主厨服务器

Berksfile源代码不识别自托管主厨服务器
EN

Server Fault用户
提问于 2015-02-08 19:48:32
回答 2查看 2.7K关注 0票数 6

我有一个自我托管的主厨服务器。我可以knife upload到那个服务器,否则就会与它交互。因此,我的knife.rb工作得很好。我最近参数化了一本食谱,以使它成为一系列相关食谱的基础。

问题是我希望这本食谱是私有的,所以它只存在于我的私人厨师服务器上。不幸的是,我不能在我的其他食谱上做berks install。我已经将我的Berksfile指向我的主厨服务器:

source https://chef.myhost.com

这不管用。我认为这是因为URL是用于主厨管理的,而不是。但是,我不知道如何让Berk大陆架识别我的主厨服务器并使用它的API。

完全错误:

代码语言:javascript
复制
> berks install
Resolving cookbook dependencies...
Fetching 'blog_role' from source at .
Fetching cookbook index from chef.myhost.com...
Error retrieving universe from source: chef.myhost.com * [Berkshelf::APIClient::BadResponse] bad response #<Faraday::Response:0x36ae618 @on_complete_callbacks=[], @env=#<Faraday::Env @method=:get @body="<html><body>You are being <a href=\"chef.myhost.com:443/signup\">redirected</a>.</body></html>" @url=#<URI::HTTPS:0x36891f0 URL:chef.myhost.com/universe> @request=#<Faraday::RequestOptions timeout=30, open_timeout=30> @request_headers={"User-Agent"=>"Faraday v0.9.1"} @ssl=#<Faraday::SSLOptions (empty)> @response_headers={"server"=>"ngx_openresty/1.4.3.6", "date"=>"Sun, 08 Feb 2015 19:49:10 GMT", "content-type"=>"text/html; charset=utf-8", "transfer-encoding"=>"chunked", "connection"=>"close", "status"=>"302 Found", "strict-transport-security"=>"max-age=631138519", "x-frame-options"=>"DENY", "x-webkit-csp"=>"default-src 'self' chrome-extension:; connect-src 'self' chrome-extension:; font-src 'self' themes.googleusercontent.com chrome-extension:; frame-src 'none' chrome-extension:; img-src 'self' ssl.google-analytics.com chrome-extension: data:; media-src 'none' chrome-extension:; object-src 'none' chrome-extension:; script-src 'self' ssl.google-analytics.com 'unsafe-inline' chrome-extension:; style-src 'self' 'unsafe-inline' fonts.googleapis.com chrome-extension:; script-nonce REDACTED;", "x-xss-protection"=>"1", "location"=>"chef.myhost.com:443/signup", "x-ua-compatible"=>"IE=Edge,chrome=1", "cache-control"=>"no-cache", "set-cookie"=>"chef-manage=REDACTED; path=/; secure; HttpOnly", "x-request-id"=>"REDACTED", "x-runtime"=>"0.034395"} @status=302>>
Unable to satisfy constraints on package source_deploy, which does not exist, due to solution constraint (app_role = 0.9.1). Solution constraints that may result in a constraint on source_deploy: [(app_role = 0.9.1) -> (source_deploy >= 0.0.0)]
Missing artifacts: source_deploy
Demand that cannot be met: (app_role = 0.9.1)
Unable to find a solution for demands: app_role (0.9.1)

因此,它尝试访问https://chef.myhost.com/universe,但它被弹到/signup页面,因为这是主厨管理,而不是Chef .但我不知道API在哪里是可以默认访问的,如果有的话。在过去的一小时里,我读过各种各样的医生,却什么也没查到.

EN

回答 2

Server Fault用户

发布于 2015-02-08 21:47:20

事实证明,一个source中的Berksfile实际上是一个伯克大陆架API的URL,而不是Chef。

在执行gem install berkshelf-api并将config.json配置为使用my Chef作为端点之后,我能够运行berks-api,然后使用主厨服务器上的端口26200作为Berksfilesource的目标。

从这里开始,berks installberks upload都在工作。

票数 1
EN

Server Fault用户

发布于 2016-07-25 16:11:24

我只是和你有同样的问题。自从更新到新版本的Chef和Chef后,我开始使用berk大陆架进行依赖关系管理。

我的烹饪书的metadata.rb文件,我们称之为second_local_cookbook引用first_local_cookbook,如下所示:

代码语言:javascript
复制
depends 'first_local_cookbook'

当我跑的时候:

代码语言:javascript
复制
berks install

在second_local_cookbook上确定菜谱依赖项,命令将以与您相同的方式失败:

代码语言:javascript
复制
Fetching cookbook index from https://supermarket.chef.io...
Unable to satisfy constraints on package first_local_cookbook, which does not exist, due to solution constraint (second_local_cookbook = 0.1.0).
Solution constraints that may result in a constraint on first_local_cookbook: [(second_local_cookbook = 0.1.0) -> (first_local_cookbook >= 0.0.0)]
Missing artifacts: first_local_cookbook

我没有尝试您的解决方案,因为我希望在不需要安装新的服务器API的情况下,有一个简单的答案来引用本地的私有食谱。我在伯克伯勒的GitHub (https://github.com/berkshelf/berkshelf/issues/892)中发现了这个封闭的问题。要从另一本菜谱中引用本地菜谱,只需在元数据区域之前引用second_local_cookbook的before文件中的second_local_cookbook:

代码语言:javascript
复制
source 'https://api.berkshelf.com'

cookbook 'first_local_cookbook', path: '../first_local_cookbook'
metadata

然后运行berks安装就会成功:

代码语言:javascript
复制
berks install
Resolving cookbook dependencies...
Fetching 'first_local_cookbook' from source at ../first_local_cookbook
Fetching 'second_local_cookbook' from source at .
...

然后,我可以成功地运行berks上传:

代码语言:javascript
复制
berks upload second_local_cookbook --no-freeze
Uploaded second_local_cookbook (0.1.0) to: 'https://chefserver:443/organizations/organization'
票数 0
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/665989

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档