首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >解析runlist的Cookbook时出错:缺少Cookbook:没有这样的Cookbook 'docker‘

解析runlist的Cookbook时出错:缺少Cookbook:没有这样的Cookbook 'docker‘
EN

Stack Overflow用户
提问于 2021-05-06 10:38:56
回答 2查看 153关注 0票数 1

我正在试着运行这个

Berksfile

代码语言:javascript
运行
复制
source 'https://supermarket.chef.io'
metadata

metadata.rb

代码语言:javascript
运行
复制
name 'my_jenkins_cookbook'

depends 'git'
depends 'ruby_rbenv'
depends 'jenkins'
depends 'java'
depends 'docker'

version '0.0.2'

我还尝试了will在本地所需的食谱,但它没有从jenkins_job食谱中找到jenkins_job资源。

有人能帮我解决这个卡住的问题吗?

终端输出:

代码语言:javascript
运行
复制
 [DEBUG] Running command 4-run-chef-solo
 [DEBUG] No test for command 4-run-chef-solo
 [ERROR] Command 4-run-chef-solo (chef-solo -c /tmp/chef/solo.rb -j /tmp/chef/jenkins.json) failed
 [DEBUG] Command 4-run-chef-solo output: Starting Chef Infra Client, version 17.0.242
Patents: https://www.chef.io/patents
resolving cookbooks for run list: ["my_jenkins_cookbook::jenkins_jobs", "my_jenkins_cookbook::jenkins_views", "my_jenkins_cookbook::setup_jenkins_users"]

============================================================
Error Resolving Cookbooks for Run List:
============================================================

Missing Cookbooks:
------------------
No such cookbook: docker

Expanded Run List:
------------------
* my_jenkins_cookbook::jenkins_jobs
* my_jenkins_cookbook::jenkins_views
* my_jenkins_cookbook::setup_jenkins_users

System Info:
------------
chef_version=17.0.242
platform=ubuntu
platform_version=18.04
ruby=ruby 3.0.1p64 (2021-04-05 revision 0fb782ee38) [x86_64-linux]
program_name=/usr/bin/chef-solo
executable=/opt/chef/bin/chef-solo

Running handlers:
 ERROR: Running exception handlers
Running handlers complete
 ERROR: Exception handlers complete
Chef Infra Client failed. 0 resources updated in 26 seconds
 FATAL: Stacktrace dumped to /tmp/chef/local-mode-cache/cache/chef-stacktrace.out
 FATAL: Please provide the contents of the stacktrace.out file if you file a bug report
 FATAL: Net::HTTPServerException: 412 "Precondition Failed"
EN

回答 2

Stack Overflow用户

发布于 2021-05-10 17:50:23

你是怎么运行这个的?这是通过chef-client直接在节点上进行还是通过Test Kitchen进行?

在我看来,你正在直接运行chef-solo,但是食谱还没有加载到服务器上。

票数 0
EN

Stack Overflow用户

发布于 2021-05-14 21:37:37

问题

看起来chef-solo execution 找不到相关的cookbooks,如错误日志中所示。所以这里是解决这个问题的另一种方法。

分辨率

对于chef-solo的另一种建议是使用-z选项运行chef-client

Chef客户端版本11及更高版本,具有名为chef-client -z的选项。这在local mode中称为厨师客户端执行。

这是在没有Chef服务器的情况下运行cookbooks的推荐方式。

Chef-client的厨师文档说明如下,

代码语言:javascript
运行
复制
$ chef-client OPTION VALUE OPTION VALUE ...

-z, --local-mode
Run the chef-client in local mode. This allows all commands that work against the Chef server to also work against the local chef-repo.

本地模式不需要配置文件,它将查找名为/cookbooks的目录,并将chef_repo_path设置为恰好高于该目录。(如果需要,本地模式将遵循配置文件中的设置。)

本地模式默认情况下会将临时文件和缓存文件存储在<chef_repo_path>/.cache目录下。这允许普通用户在本地模式下运行chef-client,而不需要root访问。

因此,请按照下面的说明操作。

使用您的食谱和其他stuff.

  • Project存储库创建项目存储库只是一个包含角色、数据库、食谱的其他目录的目录,并且在项目存储库中Environments

  • Create一个名为cookbooks的目录

  • 由于您的食谱中已经有Berksfile,请从每个食谱目录运行berks vendor cookbooks命令,以提取所有相关的食谱并将其存储在厨师存储库中,从项目存储库执行以下命令,以在本地模式下调用
  • 客户端。

<

  • >F229

chef-client -z -o 'provide_your_overridden_runlist'

  • 此步骤需要在

的Jenkins脚本部分中执行

在厨师文档中阅读更多内容,

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67411126

复制
相关文章

相似问题

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