我正在试着运行这个
Berksfile
source 'https://supermarket.chef.io'
metadata
metadata.rb
name 'my_jenkins_cookbook'
depends 'git'
depends 'ruby_rbenv'
depends 'jenkins'
depends 'java'
depends 'docker'
version '0.0.2'
我还尝试了will在本地所需的食谱,但它没有从jenkins_job
食谱中找到jenkins_job
资源。
有人能帮我解决这个卡住的问题吗?
终端输出:
[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"
发布于 2021-05-10 17:50:23
你是怎么运行这个的?这是通过chef-client直接在节点上进行还是通过Test Kitchen进行?
在我看来,你正在直接运行chef-solo,但是食谱还没有加载到服务器上。
发布于 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的厨师文档说明如下,
$ 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.
cookbooks
的目录
Berksfile
,请从每个食谱目录运行berks vendor cookbooks
命令,以提取所有相关的食谱并将其存储在厨师存储库中,从项目存储库执行以下命令,以在本地模式下调用<
chef-client -z -o 'provide_your_overridden_runlist'
的Jenkins脚本部分中执行
在厨师文档中阅读更多内容,
https://stackoverflow.com/questions/67411126
复制相似问题