Como instalar o Redis com o Chef?

2

Estou tentando instalar o Redis com o Chef. Eu acho que é fácil, pois eu só quero ter a configuração padrão.

Então, eu adiciono um Berksfile:

site :opscode

cookbook 'apt'
cookbook 'node'
cookbook 'rvm', :git => "https://github.com/fnichol/chef-rvm"
cookbook 'runit'
cookbook 'redis'

Então, eu corro: provisão de vagabundo

Mas eu entendo isso:

2013-12-11T21:18:23+00:00] DEBUG: chef_gem[rvm] is already installed - nothing to do
[2013-12-11T21:18:23+00:00] DEBUG: Loading Recipe rvm::vagrant via include_recipe
[2013-12-11T21:18:23+00:00] DEBUG: Found recipe vagrant in cookbook rvm
[2013-12-11T21:18:23+00:00] WARN: Cloning resource attributes for group[rvm] from prior resource (CHEF-3694)
[2013-12-11T21:18:23+00:00] WARN: Previous group[rvm]: /tmp/vagrant-chef-1/chef-solo-1/cookbooks/rvm/recipes/system.rb:33:in 'from_file'
[2013-12-11T21:18:23+00:00] WARN: Current  group[rvm]: /tmp/vagrant-chef-1/chef-solo-1/cookbooks/rvm/recipes/vagrant.rb:34:in 'from_file'
[2013-12-11T21:18:23+00:00] DEBUG: Loading Recipe redis via include_recipe
[2013-12-11T21:18:23+00:00] DEBUG: Found recipe default in cookbook redis
[2013-12-11T21:18:23+00:00] DEBUG: Loading Recipe metachef via include_recipe
[2013-12-11T21:18:23+00:00] DEBUG: Found recipe default in cookbook metachef
[2013-12-11T21:18:23+00:00] DEBUG: Loading Recipe redis::server via include_recipe
[2013-12-11T21:18:23+00:00] DEBUG: Found recipe server in cookbook redis
[2013-12-11T21:18:23+00:00] DEBUG: Loading Recipe runit via include_recipe
[2013-12-11T21:18:23+00:00] DEBUG: Found recipe default in cookbook runit
[2013-12-11T21:18:23+00:00] DEBUG: Loading Recipe metachef via include_recipe
[2013-12-11T21:18:23+00:00] DEBUG: I am not loading metachef, because I have already seen it.
[2013-12-11T21:18:23+00:00] DEBUG: Loading Recipe redis::default via include_recipe
[2013-12-11T21:18:23+00:00] DEBUG: I am not loading redis::default, because I have already seen it.
[2013-12-11T21:18:23+00:00] WARN: Cloning resource attributes for directory[/etc/redis] from prior resource (CHEF-3694)
[2013-12-11T21:18:23+00:00] WARN: Previous directory[/etc/redis]: /tmp/vagrant-chef-1/chef-solo-1/cookbooks/metachef/definitions/standard_dirs.rb:44:in 'block (3 levels) in from_file'
[2013-12-11T21:18:23+00:00] WARN: Current  directory[/etc/redis]: /tmp/vagrant-chef-1/chef-solo-1/cookbooks/metachef/definitions/standard_dirs.rb:44:in 'block (3 levels) in from_file'
[2013-12-11T21:18:23+00:00] DEBUG: filtered backtrace of compile error: /tmp/vagrant-chef-1/chef-solo-1/cookbooks/redis/recipes/server.rb:37:in 'block in from_file',/tmp/vagrant-chef-1/chef-solo-1/cookbooks/redis/recipes/server.rb:36:in 'from_file'
[2013-12-11T21:18:23+00:00] DEBUG: filtered backtrace of compile error: /tmp/vagrant-chef-1/chef-solo-1/cookbooks/redis/recipes/server.rb:37:in 'block in from_file',/tmp/vagrant-chef-1/chef-solo-1/cookbooks/redis/recipes/server.rb:36:in 'from_file'
[2013-12-11T21:18:23+00:00] DEBUG: backtrace entry for compile error: '/tmp/vagrant-chef-1/chef-solo-1/cookbooks/redis/recipes/server.rb:37:in 'block in from_file''
[2013-12-11T21:18:23+00:00] DEBUG: Line number of compile error: '37'
[2013-12-11T21:18:23+00:00] DEBUG: Re-raising exception: NoMethodError - undefined method 'run_state' for Chef::Resource::RunitService
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.8.2/lib/chef/resource.rb:294:in 'method_missing'
  /tmp/vagrant-chef-1/chef-solo-1/cookbooks/redis/recipes/server.rb:37:in 'block in from_file'
  /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.8.2/lib/chef/dsl/recipe.rb:71:in 'instance_eval'
  /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.8.2/lib/chef/dsl/recipe.rb:71:in 'method_missing'
  /tmp/vagrant-chef-1/chef-solo-1/cookbooks/redis/recipes/server.rb:36:in 'from_file'
  /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.8.2/lib/chef/mixin/from_file.rb:30:in 'instance_eval'
  /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.8.2/lib/chef/mixin/from_file.rb:30:in 'from_file'
  /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.8.2/lib/chef/cookbook_version.rb:237:in 'load_recipe'
  /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.8.2/lib/chef/run_context.rb:151:in 'load_recipe'
  /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.8.2/lib/chef/run_context/cookbook_compiler.rb:139:in 'block in compile_recipes'
  /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.8.2/lib/chef/run_context/cookbook_compiler.rb:137:in 'each'
  /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.8.2/lib/chef/run_context/cookbook_compiler.rb:137:in 'compile_recipes'
  /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.8.2/lib/chef/run_context/cookbook_compiler.rb:74:in 'compile'
  /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.8.2/lib/chef/run_context.rb:86:in 'load'
  /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.8.2/lib/chef/client.rb:250:in 'setup_run_context'
  /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.8.2/lib/chef/client.rb:498:in 'do_run'
  /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.8.2/lib/chef/client.rb:199:in 'block in run'
  /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.8.2/lib/chef/client.rb:193:in 'fork'
  /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.8.2/lib/chef/client.rb:193:in 'run'
  /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.8.2/lib/chef/application.rb:208:in 'run_chef_client'
  /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.8.2/lib/chef/application/solo.rb:221:in 'block in run_application'
  /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.8.2/lib/chef/application/solo.rb:213:in 'loop'
  /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.8.2/lib/chef/application/solo.rb:213:in 'run_application'
  /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.8.2/lib/chef/application.rb:66:in 'run'
  /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.8.2/bin/chef-solo:25:in ''
  /opt/chef/bin/chef-solo:23:in 'load'
  /opt/chef/bin/chef-solo:23:in ''
[2013-12-11T21:18:23+00:00] ERROR: Running exception handlers
[2013-12-11T21:18:23+00:00] ERROR: Exception handlers complete
[2013-12-11T21:18:23+00:00] FATAL: Stacktrace dumped to /var/chef/cache/chef-stacktrace.out
[2013-12-11T21:18:23+00:00] DEBUG: NoMethodError: undefined method 'run_state' for Chef::Resource::RunitService
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.8.2/lib/chef/resource.rb:294:in 'method_missing'
/tmp/vagrant-chef-1/chef-solo-1/cookbooks/redis/recipes/server.rb:37:in 'block in from_file'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.8.2/lib/chef/dsl/recipe.rb:71:in 'instance_eval'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.8.2/lib/chef/dsl/recipe.rb:71:in 'method_missing'
/tmp/vagrant-chef-1/chef-solo-1/cookbooks/redis/recipes/server.rb:36:in 'from_file'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.8.2/lib/chef/mixin/from_file.rb:30:in 'instance_eval'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.8.2/lib/chef/mixin/from_file.rb:30:in 'from_file'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.8.2/lib/chef/cookbook_version.rb:237:in 'load_recipe'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.8.2/lib/chef/run_context.rb:151:in 'load_recipe'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.8.2/lib/chef/run_context/cookbook_compiler.rb:139:in 'block in compile_recipes'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.8.2/lib/chef/run_context/cookbook_compiler.rb:137:in 'each'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.8.2/lib/chef/run_context/cookbook_compiler.rb:137:in 'compile_recipes'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.8.2/lib/chef/run_context/cookbook_compiler.rb:74:in 'compile'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.8.2/lib/chef/run_context.rb:86:in 'load'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.8.2/lib/chef/client.rb:250:in 'setup_run_context'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.8.2/lib/chef/client.rb:498:in 'do_run'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.8.2/lib/chef/client.rb:199:in 'block in run'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.8.2/lib/chef/client.rb:193:in 'fork'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.8.2/lib/chef/client.rb:193:in 'run'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.8.2/lib/chef/application.rb:208:in 'run_chef_client'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.8.2/lib/chef/application/solo.rb:221:in 'block in run_application'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.8.2/lib/chef/application/solo.rb:213:in 'loop'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.8.2/lib/chef/application/solo.rb:213:in 'run_application'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.8.2/lib/chef/application.rb:66:in 'run'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.8.2/bin/chef-solo:25:in ''
/opt/chef/bin/chef-solo:23:in 'load'
/opt/chef/bin/chef-solo:23:in ''
[2013-12-11T21:18:23+00:00] ERROR: undefined method 'run_state' for Chef::Resource::RunitService

================================================================================
Recipe Compile Error in /tmp/vagrant-chef-1/chef-solo-1/cookbooks/redis/recipes/server.rb
================================================================================


NoMethodError
-------------
undefined method 'run_state' for Chef::Resource::RunitService


Cookbook Trace:
---------------
  /tmp/vagrant-chef-1/chef-solo-1/cookbooks/redis/recipes/server.rb:37:in 'block in from_file'
  /tmp/vagrant-chef-1/chef-solo-1/cookbooks/redis/recipes/server.rb:36:in 'from_file'


Relevant File Content:
----------------------
/tmp/vagrant-chef-1/chef-solo-1/cookbooks/redis/recipes/server.rb:

 30:  standard_dirs('redis.server') do
 31:    directories   :conf_dir, :log_dir, :data_dir
 32:  end
 33:
 34:  kill_old_service('redis-server'){ only_if{ File.exists?("/etc/init.d/redis-server") } }
 35:
 36:  runit_service "redis_server" do
 37>>   run_state     node[:redis][:server][:run_state]
 38:    options       node[:redis]
 39:  end
 40:
 41:  announce(:redis, :server,
 42:    :port => node[:redis][:server][:port])
 43:


[2013-12-11T21:18:21+00:00] INFO: Forking chef instance to converge...
[2013-12-11T21:18:21+00:00] DEBUG: Fork successful. Waiting for new chef pid: 28235
[2013-12-11T21:18:23+00:00] FATAL: Chef::Exceptions::ChildConvergeError: Chef run process exited unsuccessfully (exit code 1)

EDITAR

Esta é a lista de execução:

  config.vm.provision :chef_solo do |chef|
    chef.cookbooks_path = "./cookbooks"
    #chef.roles_path = "../my-recipes/roles"
    #chef.data_bags_path = "../my-recipes/data_bags"
    chef.add_recipe "runit"
    chef.add_recipe "rvm::system"
    chef.add_recipe "rvm::vagrant"
    chef.add_recipe "redis::install_from_release"
    chef.add_recipe "redis::client"
    # chef.add_recipe "node"
    # chef.add_role "web"

    # You may also specify custom JSON attributes:
    chef.json = { 
      'rvm' => {
         'rubies' => ["2.0.0-p353"],
         'default_ruby' => "2.0.0-p353",
         :vagrant => { :system_chef_solo => "/opt/chef/bin/chef-solo" }
      }
    }

    chef.log_level = :debug 
  end


    
por poseid 11.12.2013 / 22:21

3 respostas

2

Coloque o livro de receitas "runit" no topo da sua runlist e tente novamente.

    
por 11.12.2013 / 22:40
1

Investigando o livro de receitas, encontrei:

recipe           "redis::default",                     "Base configuration for redis"
recipe           "redis::install_from_package",        "Install From Ubuntu Package -- easy but lags in version"
recipe           "redis::install_from_release",        "Install From Release"
recipe           "redis::server",                      "Redis server with runit service"
recipe           "redis::client",  

Ao usar: redis :: install_from_package eu recebo algo funcionando

    
por 11.12.2013 / 23:15
0

Parece ser um problema com o livro de receitas "runit". Eu tive o mesmo problema, mesmo colocando "runit" no topo da minha lista de execução.

Uma solução rápida seria usar "redis :: install_from_package" em seu lugar.

PS: Se você receber alguma exceção com install_from_package, tente limpar os redis (porque ele pode ter sido gerado a partir de suas tentativas anteriores):

sudo apt-get purge  redis-server
rm -rf /etc/redis
    
por 29.11.2014 / 15:22