【问题标题】:Chef server, install a cookbook that is not from cookbook site厨师服务器,安装不是来自食谱网站的食谱
【发布时间】:2013-07-26 00:48:05
【问题描述】:

我们有一个测试环境,由一台服务器、一台客户端和另一台作为工作站的客户端组成。

我知道命令

# knife cookbook site install apache2

但是这个命令会产生错误,因为我什至无法使用食谱网站下载。 当我下载时,

# knife cookbook site download apache2

这出来了,

ERROR: Connection refused connecting to cookbooks.opscode.com:80 for /api/v1/cookbooks/apache2, retry 1/5
ERROR: Network Error: Connection refused - Connection refused connecting to cookbooks.opscode.com:80 for /api/v1/cookbooks/apache2, giving up
Check your knife configuration and network settings

如果您有解决此问题的方法,也请分享,但我的主要问题是知道手动安装食谱的方法吗?不是来自食谱网站? 我尝试使用那里的“下载”按钮从站点下载它,然后将 tar.gz 复制到工作站,将其上传到厨师服务器,将食谱添加到节点的运行列表配方中,然后执行

# chef-client

在工作站中。这和安装的方法一样吗?如果没有,有什么办法吗?

谢谢。

【问题讨论】:

  • 您的主厨仓库中是否有 .chef 文件夹,是否有您的凭据(USER.pem 和 VALIDATOR.pem)?
  • 是的。我已经解决了这个问题。看来我的问题是http代理。在knife.rb 中,我添加了http_proxy。现在,我可以成功执行#knife cookbook site list 但安装和下载生成了一个新的错误——它说的授权问题。有任何想法吗?我添加了上面的错误。

标签: chef-infra


【解决方案1】:

从您的 chef-repo 中上传食谱的正常步骤是:

  1. 下载说明书并将其解压到您的chef-repo/cookbooks 目录
  2. 使用knife cookbook upload -aknife cookbook upload [COOKBOOKS...] 将食谱上传到您的厨师服务器
  3. 使用 chef-client 在您的客户端节点上运行 chef-client

这似乎与您所做的相符。

使用knife cookbook site install COOKBOOK“安装”食谱与通过knife cookbook site download COOKBOOK 下载基本相同,只是下载命令将其保存为 .tar.gz,而安装命令将其解压缩并设置一个 git 子模块,以便你可以保持最新。 (见Managing Cookbooks With Knife - Cookbook Site。)

您可以使用 LibrarianBerkshelf 等工具从任何 git 存储库、Opscode 社区站点或本地路径管理和下载食谱。这两个 gem 的工作方式与 Bundler 非常相似。它们会生成 Cheffile.lockBerksfile.lock,帮助您将食谱锁定到某个版本或提交 SHA。

编辑:不过,我不确定为什么 knife cookbook site install/download 不起作用;他们不需要任何形式的身份验证。来自knife cookbook sitedocs:“对于仅从说明书站点读取的命令(例如下载、搜索、安装和列出),您不需要 community.opscode.com 上的帐户。对于写入您需要在社区网站上注册一个帐户。”

值得注意的是knife cookbook site downloadknife cookbook download 不同。前者连接到 community.opscode.com,而后者连接到您的厨师服务器。您遇到了哪些问题?

【讨论】:

  • 谢谢你。我现在明白了,使用不是来自网站的食谱运行 chef-client 与安装它是一样的。最后,我通过将 http_proxy 添加到knife.rb 来设法连接到食谱网站。我可以执行#knife cookbook site list 但不能安装和下载。有任何想法吗?再次感谢您!
  • 没问题!您可以尝试在tickets.opscode.com 上开票,他们非常乐于助人。我要添加的完整文本块在这里空间不足,因此我将其粘贴到上面的答案中作为编辑。
  • 嗨!我在从 community.opscode.com 下载刀具食谱网站时遇到问题。我认为问题不在于对站点的身份验证,而在于对服务器的授权。我在下面添加了错误日志以供参考。谢谢。
  • 如果我不想在 git 中提交这个怎么办。我们正在使用 SVN,我们想跳过整个提交到 SVN
【解决方案2】:

运行 chef-client 与从站点安装说明书相同。

另外,我想出了一个方法来修复这个错误:

ERROR: Connection refused connecting to cookbooks.opscode.com:80 for /api/v1/cookbooks/apache2, retry 1/5
ERROR: Network Error: Connection refused - Connection refused connecting to cookbooks.opscode.com:80 for /api/v1/cookbooks/apache2, giving up
Check your knife configuration and network settings

我在 /root/.chef/knife.rb 中添加了 http_proxy

现在,我可以成功执行了

# knife cookbook site list

但是,cookbook 站点安装和下载产生了一个新错误。

Downloading getting-started from the cookbooks site at version 0.4.0 to /home/chef/getting-started-0.4.0.tar.gz
ERROR: You authenticated successfully to http://10.43.109.236:4000 as my-chefuser but you are not authorized for this action
Response:  #<Net::ReadAdapter:0x2b2afa986ac0>

我认为现在的问题是厨师服务器的权限,而不是食谱网站,因为我已经通过列出食谱来访问它。

【讨论】:

    【解决方案3】:

    我也遇到了这个问题,使用 Chef 票务系统中的这个问题为我修复了下载和上传问题:将这些行添加到您的 Knife.rb 文件的末尾:

    http_proxy                "http://proxyserver:8080"
    https_proxy               "http://proxyserver:8080"
    
    require 'rest-client'
    RestClient.proxy = "http://proxyserver:8080"
    

    显然您需要替换 proxyserver:8080 的地方需要替换为您的具体情况。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-01
    • 2015-05-01
    • 1970-01-01
    • 2013-08-21
    • 1970-01-01
    • 2019-01-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多