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


Chronological Thread 
  • From: AJ Christensen < >
  • To: chef < >
  • Subject: [chef] Re: Re: Re: Re: Re: rbenv setup for system wide
  • Date: Mon, 25 Feb 2013 16:03:22 +1300

Oh, with regard to previous email: logs from the run @
https://gist.github.com/fujin/3486e11355980f27771d

Cheers,

AJ

On 25 February 2013 15:52, AJ Christensen 
< >
 wrote:
> I built a test cookbook to try to figure this out. It works for me --
> 'bundle && bundle exec vagrant up' [0]
>
> You don't need to use the ruby_build_ruby LWRP, the functionality is
> included in the rbenv LWRPs but is extended by the existence of the
> ruby_build cookbook.
>
> Be sure to inspect the Berksfile (it refers to git versions of
> Fletcher's cookbooks, not sure if these are required), and also the
> metadata and default recipe of 'system_wide_rbenv'. [1]
>
> Cheers,
>
> --AJ
>
> [0] https://github.com/fujin/system_wide_rbenv
> [1] 
> https://github.com/fujin/system_wide_rbenv/blob/master/recipes/default.rb#L20-L23
>
> On 25 February 2013 13:25, S Ahmed 
> < >
>  wrote:
>> 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 
>> < >
>>  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 
>>> < >
>>> 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 
>>>> < >
>>>>  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 
>>>> > < >
>>>> > 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 
>>>> >> < >
>>>> >>  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 
>>>> >> > < >
>>>> >> >  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.

§