在运行 Pyramid 的配方时,以下内容失败chef-solo
:
================================================================================
Error executing action `create` on resource 'directory[/etc/service/pyramid/supervise/status]'
================================================================================
NoMethodError
-------------
undefined method `checksum' for Chef::Resource::Directory
Resource Declaration:
---------------------
# In /var/chef-solo/cookbooks/project/recipes/pyramid.rb
22: directory "#{node['runit']['service_dir']}/pyramid#{dir}/supervise/#{f}" do
23: owner login
24: group login
25: end
26: end
Compiled Resource:
------------------
# Declared in /var/chef-solo/cookbooks/project/recipes/pyramid.rb:22:in `block (2 levels) in from_file'
directory("/etc/service/pyramid/supervise/status") do
provider Chef::Provider::Directory
action :create
retries 0
retry_delay 2
path "/etc/service/pyramid/supervise/status"
cookbook_name :project
recipe_name "pyramid"
owner "myusername"
group "myusername"
mode 420
end
为什么会出现“未定义的方法checksum
”,我该怎么办?
此错误似乎不一致。有时厨师运行似乎挂起。其他时候,经过多次运行,厨师能够通过这一点。
我在一个普通的 Ubuntu 服务器 12.04LTS 上运行,安装了一个部署脚本的厨师:
sudo apt-get install -y ruby1.9.1 ruby1.9.1-dev make &&
sudo gem1.9.1 install chef ohai --no-rdoc --no-ri
这是完整的金字塔食谱:
login = node["user"]["login"]
home = node["user"]["home"]
app_root = node["user"]["app_root"]
runit_service "pyramid" do #, :template_name => "site" do
template_name "pyramid"
owner login
group login
options({
:login => login,
:app_root => app_root,
:home => home,
:config => "#{app_root}/config/gunicorn.conf.py"
})
end
["", "/log"].each do |dir|
directory "#{node['runit']['service_dir']}/pyramid#{dir}/supervise" do
mode "0755"
end
%w(ok control status).each do |f|
directory "#{node['runit']['service_dir']}/pyramid#{dir}/supervise/#{f}" do
owner login
group login
end
end
end