- From: AJ Christensen <
>
- To: chef <
>
- Subject: [chef] Re: Re: Re: Re: Re: rbenv setup for system wide
- Date: Mon, 25 Feb 2013 15:52:21 +1300
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.