redisio cookbooksでハマった
chef-client 11.10.4が動作するサーバをターゲットに
berks updateしないでredis使ってたら突然
ここのissueと同じようなものが発生。
- 回避策
redisioのcookbookバージョンを1.7.1以上にすると回避できますよ。
cookbook "redisio", "~> 1.7.1"
- エラー
Recipe: redisio::install
* redisio_install[redis-servers] action run
================================================================================
Error executing action `run` on resource 'redisio_install[redis-servers]'
================================================================================
ArgumentError
-------------
You must supply a name when declaring a file resource
Cookbook Trace:
---------------
/root/chef-solo/cookbooks-3/redisio/providers/install.rb:138:in `block (2 levels) in configure'
/root/chef-solo/cookbooks-3/redisio/providers/install.rb:90:in `block in configure'
/root/chef-solo/cookbooks-3/redisio/providers/install.rb:66:in `each'
/root/chef-solo/cookbooks-3/redisio/providers/install.rb:66:in `configure'
/root/chef-solo/cookbooks-3/redisio/providers/install.rb:30:in `block in class_from_file'
Resource Declaration:
---------------------
# In /root/chef-solo/cookbooks-3/redisio/recipes/install.rb
30: redisio_install "redis-servers" do
31: version redis['version']
32: download_url location
33: default_settings redis['default_settings']
34: servers redis_instances
35: safe_install redis['safe_install']
36: base_piddir redis['base_piddir']
37: install_dir redis['install_dir']
38: end
39:
40: # Create a service resource for each redis instance, named for the port it runs on.
41: redis_instances.each do |current_server|
42: server_name = current_server['name'] || current_server['port']
43: job_control = current_server['job_control'] || redis['default_settings']['job_control']
44:
45: if job_control == 'initd'
46: service "redis#{server_name}" do
47: start_command "/etc/init.d/redis#{server_name} start"
48: stop_command "/etc/init.d/redis#{server_name} stop"
49: status_command "pgrep -lf 'redis.*#{server_name}' | grep -v 'sh'"
50: restart_command "/etc/init.d/redis#{server_name} stop && /etc/init.d/redis#{server_name} start"
51: supports :start => true, :stop => true, :restart => true, :status => false
52: end
53: elsif job_control == 'upstart'
54: service "redis#{server_name}" do
55: provider Chef::Provider::Service::Upstart
56: start_command "start redis#{server_name}"
57: stop_command "stop redis#{server_name}"
58: status_command "pgrep -lf 'redis.*#{server_name}' | grep -v 'sh'"
59: restart_command "restart redis#{server_name}"
60: supports :start => true, :stop => true, :restart => true, :status => false
61: end
62: else
63: Chef::Log.error("Unknown job control type, no service resource created!")
64: end
65:
66: end
67:
Compiled Resource:
------------------
# Declared in /root/chef-solo/cookbooks-3/redisio/recipes/install.rb:30:in `from_file'
redisio_install("redis-servers") do
action :run
updated true
updated_by_last_action true
retries 0
retry_delay 2
cookbook_name :redisio
recipe_name "install"
version "2.6.14"
download_url "https://redis.googlecode.com/files/redis-2.6.14.tar.gz"
default_settings {"user"=>"redis", "group"=>"redis", "homedir"=>"/var/lib/redis", "shell"=>"/bin/sh", "systemuser"=>true, "ulimit"=>0, "configdir"=>"/etc/redis", "name"=>nil, "address"=>nil, "databases"=>"16", "backuptype"=>"rdb", "datadir"=>"/var/lib/redis", "unixsocket"=>nil, "unixsocketperm"=>nil, "timeout"=>"0", "loglevel"=>"verbose", "logfile"=>nil, "syslogenabled"=>"yes", "syslogfacility"=>"local0", "shutdown_save"=>false, "save"=>nil, "slaveof"=>nil, "job_control"=>"initd", "masterauth"=>nil, "slaveservestaledata"=>"yes", "replpingslaveperiod"=>"10", "repltimeout"=>"60", "requirepass"=>nil, "maxclients"=>10000, "maxmemory"=>nil, "maxmemorypolicy"=>"volatile-lru", "maxmemorysamples"=>"3", "appendfsync"=>"everysec", "noappendfsynconrewrite"=>"no", "aofrewritepercentage"=>"100", "aofrewriteminsize"=>"64mb", "cluster-enabled"=>"no", "cluster-config-file"=>nil, "cluster-node-timeout"=>5, "includes"=>nil}
servers [{"port"=>6379}]
safe_install true
base_piddir "/var/run/redis"
base_name "redis-"
artifact_type "tar.gz"
download_dir "/var/chef/cache"
end
Running handlers:
[2014-03-26T01:38:34+09:00] ERROR: Running exception handlers
Running handlers complete
[2014-03-26T01:38:34+09:00] ERROR: Exception handlers complete
[2014-03-26T01:38:34+09:00] FATAL: Stacktrace dumped to /var/chef/cache/chef-stacktrace.out
Chef Client failed. 0 resources updated in 22.319939289 seconds
[2014-03-26T01:38:34+09:00] ERROR: redisio_install[redis-servers] (redisio::install line 30) had an error: ArgumentError: You must supply a name when declaring a file resource
[2014-03-26T01:38:34+09:00] FATAL: Chef::Exceptions::ChildConvergeError: Chef run process exited unsuccessfully (exit code 1)
ERROR: RuntimeError: chef-solo failed. See output above.
shell returned 100