用于#<chef :: cookbook :: metadata:0x000000006f1378>的未定义方法`source_url'

时间:2017-12-05 08:18:30

标签: docker chef chef-solo

我在实践中使用书籍泊坞机学习码头工作。

我正在制作第5章的技巧47。

此配方是关于使用厨师管理泊坞窗配置。 github链接是here

当我从容器构建docker镜像时,遇到以下错误。

$ docker build -t chef-example .
Sending build context to Docker daemon  9.728kB
Step 1/12 : FROM ubuntu:latest
 ---> ccc7a11d65b1
Step 2/12 : RUN apt-get update && apt-get install -yy git curl
 ---> Using cache
 ---> ef956c61c59f
Step 3/12 : RUN curl -L https://opscode-omnibus-packages.s3.amazonaws.com/ubuntu/12.04/x86_64/chefdk_0.3.5-1_amd64.deb -o chef.deb
 ---> Using cache
 ---> 1260301dbe67
Step 4/12 : RUN dpkg -i chef.deb && rm chef.deb
 ---> Using cache
 ---> 8c1aeaf84423
Step 5/12 : COPY . /chef
 ---> 18986195e732
Removing intermediate container 758dfce43670
Step 6/12 : WORKDIR /chef/cookbooks
 ---> fbdd9c386801
Removing intermediate container 936393187cb4
Step 7/12 : RUN knife cookbook site download apache2
 ---> Running in 2ba7d0765ae2
 WARNING: No knife configuration file found
 Downloading apache2 from the cookbooks site at version 5.0.1 to /chef/cookbooks/apache2-5.0.1.tar.gz
Cookbook saved: /chef/cookbooks/apache2-5.0.1.tar.gz
 ---> 8b3fa14f4416
Removing intermediate container 2ba7d0765ae2
Step 8/12 : RUN knife cookbook site download iptables
 ---> Running in 94275acfdb44
WARNING: No knife configuration file found
Downloading iptables from the cookbooks site at version 4.3.1 to /chef/cookbooks/iptables-4.3.1.tar.gz
Cookbook saved: /chef/cookbooks/iptables-4.3.1.tar.gz
 ---> c8a4c6d17253
Removing intermediate container 94275acfdb44
Step 9/12 : RUN knife cookbook site download logrotate
 ---> Running in 27b5f736d6cf
WARNING: No knife configuration file found
Downloading logrotate from the cookbooks site at version 2.2.0 to /chef/cookbooks/logrotate-2.2.0.tar.gz
Cookbook saved: /chef/cookbooks/logrotate-2.2.0.tar.gz
 ---> 1b4b4460bdc9
Removing intermediate container 27b5f736d6cf
Step 10/12 : RUN /bin/bash -c 'for f in $(ls *gz); do tar -zxf $f; rm $f; done'
 ---> Running in 7e6b912d910e
 ---> d5e77acc14f1
Removing intermediate container 7e6b912d910e
Step 11/12 : RUN chef-solo -c /chef/config.rb -j /chef/attributes.json
 ---> Running in a0c7f7f7a00a
[2017-12-05T08:01:08+00:00] INFO: Forking chef instance to converge...
[2017-12-05T08:01:08+00:00] INFO: *** Chef 11.18.0.rc.1 ***
[2017-12-05T08:01:08+00:00] INFO: Chef-client pid: 9
[2017-12-05T08:01:09+00:00] INFO: Setting the run_list to 
["recipe[apache2::default]", "recipe[mysite::default]"] from CLI options
[2017-12-05T08:01:09+00:00] INFO: Run List is 
[recipe[apache2::default], recipe[mysite::default]]
[2017-12-05T08:01:09+00:00] INFO: Run List expands to [apache2::default, mysite::default]
[2017-12-05T08:01:09+00:00] INFO: Starting Chef Run for 8089fe031125
[2017-12-05T08:01:09+00:00] INFO: Running start handlers
[2017-12-05T08:01:09+00:00] INFO: Start handlers complete.
[2017-12-05T08:01:09+00:00] ERROR: Running exception handlers
[2017-12-05T08:01:09+00:00] ERROR: Exception handlers complete
[2017-12-05T08:01:09+00:00] FATAL: Stacktrace dumped to /chef/cache/chef-stacktrace.out
[2017-12-05T08:01:09+00:00] ERROR: undefined method `source_url' for #<Chef::Cookbook::Metadata:0x000000006f1378>
[2017-12-05T08:01:09+00:00] FATAL: Chef::Exceptions::ChildConvergeError: Chef run process exited unsuccessfully (exit code 1)
The command '/bin/sh -c chef-solo -c /chef/config.rb -j /chef/attributes.json' returned a non-zero code: 1

我是厨师的新手。不知道为什么我会收到这个错误。

1 个答案:

答案 0 :(得分:1)

你的食谱没有metadata.rb,这可能会破坏你的东西,但是你也在使用Chef 11.18,这在目前完全不受支持。现任厨师是13.6.4。

在大多数情况下,我们也不建议使用Chef来构建容器图像。它绝对可以工作,但整体Chef是为管理服务器而构建的,所以在大多数情况下这会产生类似服务器的胖图像。