[chef] Re: Re: Re: Re: rbenv setup for system wide


Chronological Thread 
  • From: S Ahmed < >
  • To:
  • Subject: [chef] Re: Re: Re: Re: rbenv setup for system wide
  • Date: Sun, 24 Feb 2013 19:25:53 -0500

Ok got a bit futher:

recipe/default.rb:

include_recipe "ruby_build"
include_recipe "rbenv::system"
include_recipe "rbenv::system_install"



ruby_build_ruby "1.9.3-p194"
rbenv_global "1.9.3-p194"


Error:

Generated at 2013-02-25 00:08:05 +0000
Mixlib::ShellOut::ShellCommandFailed: script[rbenv global 1.9.3-p194 (system)] (/home/ubuntu/chef/cookbooks/rbenv/providers/script.rb line 28) had an error: Mixlib::ShellOut::ShellCommandFailed: Expected process to exit with [0], but received '1'
---- Begin output of "bash"  "/tmp/chef-script20130225-4608-xuqhko" ----
STDOUT: 
STDERR: rbenv: version `global' not installed
rbenv: version `1.9.3-p194' not installed
---- End output of "bash"  "/tmp/chef-script20130225-4608-xuqhko" ----
Ran "bash"  "/tmp/chef-script20130225-4608-xuqhko" returned 1
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/mixlib-shellout-1.1.0/lib/mixlib/shellout.rb:248:in `invalid!'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/mixlib-shellout-1.1.0/lib/mixlib/shellout.rb:234:in `error!'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.4.0/lib/chef/mixin/shell_out.rb:36:in `shell_out!'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.4.0/lib/chef/provider/execute.rb:62:in `block in action_run'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.4.0/lib/chef/mixin/why_run.rb:52:in `call'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.4.0/lib/chef/mixin/why_run.rb:52:in `add_action'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.4.0/lib/chef/provider.rb:151:in `converge_by'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.4.0/lib/chef/provider/execute.rb:61:in `action_run'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.4.0/lib/chef/provider/script.rb:33:in `action_run'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.4.0/lib/chef/provider.rb:114:in `run_action'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.4.0/lib/chef/resource.rb:603:in `run_action'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.4.0/lib/chef/runner.rb:50:in `run_action'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.4.0/lib/chef/runner.rb:82:in `block (2 levels) in converge'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.4.0/lib/chef/runner.rb:82:in `each'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.4.0/lib/chef/runner.rb:82:in `block in converge'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.4.0/lib/chef/resource_collection.rb:94:in `block in execute_each_resource'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.4.0/lib/chef/resource_collection/stepable_iterator.rb:116:in `call'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.4.0/lib/chef/resource_collection/stepable_iterator.rb:116:in `call_iterator_block'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.4.0/lib/chef/resource_collection/stepable_iterator.rb:85:in `step'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.4.0/lib/chef/resource_collection/stepable_iterator.rb:104:in `iterate'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.4.0/lib/chef/resource_collection/stepable_iterator.rb:55:in `each_with_index'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.4.0/lib/chef/resource_collection.rb:92:in `execute_each_resource'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.4.0/lib/chef/runner.rb:81:in `converge'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.4.0/lib/chef/client.rb:404:in `converge'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.4.0/lib/chef/client.rb:469:in `do_run'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.4.0/lib/chef/client.rb:200:in `run'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.4.0/lib/chef/application.rb:190:in `run_chef_client'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.4.0/lib/chef/application/solo.rb:239:in `block in run_application'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.4.0/lib/chef/application/solo.rb:231:in `loop'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.4.0/lib/chef/application/solo.rb:231:in `run_application'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.4.0/lib/chef/application.rb:73:in `run'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.4.0/bin/chef-solo:25:in `<top (required)>'
/usr/bin/chef-solo:23:in `load'



On Sun, Feb 24, 2013 at 5:21 PM, S Ahmed < " target="_blank"> > wrote:
Ok let me start over here, I was using another rbenv that is differrent from fnichol's cookbook.

In my cookbooks I have rbenv (fnichols) and ruby_build (also fnichols), I just downloaded the zip and put it in my /cookbooks (is that ok or do I have to build it?)

/cookbook/rbenv
/cookbook/ruby_build

1. base.rb role:

run_list ... "recipe[ruby_build]", "recipe[my_ruby]"

2. my_ruby

metadata.rb:

depends "rbenv"

recipes/default.rb:

include_recipe "rbenv::system"
include_recipe "rbenv::ruby_build"

rbenv_ruby "1.9.3" do
  ruby_version "1.9.3-p194"
  global true
end

rbenv_gem "bundler" do
  ruby_version "1.9.3-p194"
end

rbenv_gem "rubygems" do
  ruby_version "1.9.3-p194"
end


Now when I run it I get this error:

2013-02-24T22:16:51+00:00] FATAL: Chef::Exceptions::RecipeNotFound: could not find recipe ruby_build for cookbook rbenv

   





On Sun, Feb 24, 2013 at 3:48 PM, AJ Christensen < " target="_blank"> > wrote:
You'll want 'recipe[rbenv::system_install]' and any appropriate $PATH
modifications via /etc/profile.d -- can be a file/contents; make use
of the LWRP 'rbenv_global' [0]

As I mentioned previously, a node attribute hash-map like this suits:

node.default['my_org_rbenv']['system_rubygems']['1.9.3-p194'] = {
  bundler: {
    version: '1.2.3',
    action: 'install',
  }
}

system_ruby_version = node['my_org_rbenv']['system_ruby_version']

rbenv_global system_ruby_version

node['my_org_rbenv']['system_rubygems'][system_ruby_version].each do
|gem, params|
  rbenv_gem gem do
    rbenv_version systemruby
    version params['version']
    action params['action'].to_sym
  end
end

Note that this only reduces repetition and is not required at all.

Cheers,

AJ

[0] rbenv LWRPs: https://github.com/fnichol/chef-rbenv#lwrps

On 25 February 2013 07:10, S Ahmed < " target="_blank"> > wrote:
> thanks, looks like I got most of it.
>
> 1. How do I set it as global (system wide, not user specific?):
> default.rb:
>
> include_recipe "rbenv::default"
> include_recipe "rbenv::ruby_build"
>
> rbenv_ruby "1.9.3-p194"
>
> After my chef-solo ran, I get this when doing:  ruby
>
> rbenv: ruby: command not found
>
> The `ruby' command exists in these Ruby versions:
>   1.9.3-p194
>
>
> 2. if I want to install more gems, I have to keep repeating this or like you
> said put it in a each loop right?
>
> rbenv_gem "bundler" do
>   ruby_version "1.9.3-p194"
> end
>
> rbenv_gem "rubygems" do
>   ruby_version "1.9.3-p194"
> end
>
> ..
> ..
>
>
>
> On Mon, Feb 18, 2013 at 4:17 PM, AJ Christensen < " target="_blank"> > wrote:
>>
>> Oh, as for gems: toss 'em in an attribute, map the attribute into
>> gem_package resources after rbenv is installed and activated so that
>> gem_package goes to the correct VM.
>>
>> Cheers,
>>
>> AJ
>>
>> On 19 February 2013 10:14, AJ Christensen < " target="_blank"> > wrote:
>> > Create a cookbook "myorg_system_wide_ruby" and add the rbenv 'related
>> > code' you mentioned in there.
>> >
>> > depends goes into metadata.rb, the rest in a recipe
>> >
>> > Cheers,
>> >
>> > AJ
>> >
>> > On 19 February 2013 10:11, S Ahmed < " target="_blank"> > wrote:
>> >> Thanks to your suggestions, I am going to use rbenv to manage my
>> >> servers
>> >> system wide ruby and gems setup.
>> >>
>> >> From the readme it seems to alude to using rbenv as dependancy to a
>> >> cookbook, but I want to setup a system wide (default) ruby and
>> >> rubygems.
>> >>
>> >> Does this mean I have to put this in my role_name.rb file?  (I'm using
>> >> chef-solo).
>> >>
>> >> My current base.rb is:
>> >>
>> >> name 'base'
>> >> description 'base role that all nodes will have'
>> >> run_list "recipe[build-essential]", "recipe[ohai]", "recipe[runit]",
>> >> "recipe[yum]", "recipe[openssl]", "recipe[git]", "recipe[apt]",
>> >> "recipe[java]"
>> >>
>> >> So do I put rbenv related code in here like:
>> >>
>> >>     depends 'rbenv'
>> >>
>> >>     include_recipe "rbenv::default"
>> >>     include_recipe "rbenv::ruby_build"
>> >>
>> >>     rbenv_ruby "1.9.3-p194"
>> >>
>> >>     rbenv_gem "bundler" do
>> >>       ruby_version "1.9.3-p194"
>> >>     end
>> >>
>> >>
>> >> How can I create a list of gems I want pre-installed for default ruby
>> >> to be
>> >> able to access?
>
>





Archive powered by MHonArc 2.6.16.

§