NikolayMurha / chef-rvm

:exclamation: :exclamation: Needs a developer. I'll give this project into the caring hands. :exclamation: :exclamation:
MIT License
7 stars 18 forks source link

chef_rvm

LWRP's based rvm cookbook

Code Climate Build Status

Inspired by RVM cookbook

Supported chef-client version:

Chef-Client >= 11.12.0

LWRP's

chef_rvm

chef_rvm 'ubuntu' do
  rubies ['2.0.0', '2.1.1']
  rvmrc({
    'rvm_autoupdate_flag'=> '1'
  })
end

Actions

Action Description
:install This is default action
:implode
:upgrade

chef_rvm_ruby

chef_rvm_ruby 'ubuntu:ruby:1.9.3' do
  version '1.9.3'
  patch 'falcon'
  default true
end

Actions

Action Description
:install This is default action
:remove
:uninstall
:reinstall

chef_rvm_gemset

chef_rvm_gemset 'ubuntu:gemset:1.9.3:test' do
   ruby_string '1.9.3@test'
   user 'ubuntu'
   action :create
end

Actions

Action Description
:create This is default action
:delete
:update
:pristine
:prune

chef_rvm_gem

chef_rvm_gem 'ubuntu:unicorn' do
   gem 'unicorn'
   user 'ubuntu'
   ruby_string '1.9.3@test'
end

Actions

Action Description
:install This is default action
:uninstall
:update

chef_rvm_wrapper

chef_rvm_wrapper 'ubuntu:my_project_unicorn' do
   user 'ubuntu'
   ruby_string '1.9.3@test'
   prefix 'my_project'
   binary 'unicorn'
   action :create
end

Actions

Action Description
:create This is default action
:create_or_update

chef_rvm_alias

    chef_rvm_alias 'ubuntu:my_alias' do
       user 'ubuntu'
       alias_name 'my_alias'
       ruby_string '1.9.3@test'
       action :create
    end

Actions

Action Description
:create This is default action
:delete

Execute

Execute scripts in rvm environment. All resources worked like native resources but guards inherit environment from resource by default.

chef_rvm_execute 'bundle install' do
  ruby_string '2.0.0'
  user 'ubuntu'
  cwd '/home/ubuntu/test'
  command 'bundle install'
  not_if 'bundle check'
  action :run
end
chef_rvm_script 'bundle_install_sh' do
  interpreter 'sh'
  ruby_string '2.0.0'
  user 'ubuntu'
  cwd '/home/ubuntu/test'
  code <<CODE
    bundle install
CODE
  not_if 'bundle check'
  action :run
end
chef_rvm_bash 'bundle_install' do
   ruby_string '2.0.0'
   user 'ubuntu'
   cwd '/home/ubuntu/test'
   code <<CODE
      bundle install
CODE
  action :run
  not_if 'bundle check'
end

Attributes

  # Default options for .rvmrc for all users
  node['chef_rvm']['rvmrc'] = {
    'rvm_gem_options' => '--no-rdoc --no-ri',
    'rvm_autoupdate_flag' => 0
  }

  # User installations

  node['chef_rvm'] = {
    users: {
      ubuntu: {
        rubies: {
          '1.9.3' => {action: 'install', patch: 'falcon'},
          '2.0' => 'install',
        },
        gems: {
          '1.9.3@test' => %w(eye unicorn),
          '1.9.3@test2' => [
            {gem: 'eye', version: '0.6', action: 'install'},
            'unicorn'
          ],
          '1.9.3@test3' => 'unicorn',
        },
        wrappers: {
          :'1.9.3@test' => {
            bootup: [
              {
                binary: 'eye',
                action: 'create_or_update'
              }
            ]
          },
          :'1.9.3@test2' => {
            bootup: %w(eye unicorn)
          },
          :'1.9.3@test3' => {
            bootup: 'unicorn'
          }
        },
        aliases: {
          'my_alias' => '2.0.0',
          'my_alias_2' => '1.9.3@test2'
        }
      }
    }
  }

Recipes

recipe[chef_rvm::default] # Full installations
recipe[chef_rvm::packages] # Required packages
recipe[chef_rvm::rvm]
recipe[chef_rvm::gemsets] # Create gemset
recipe[chef_rvm::rubies]
recipe[chef_rvm::gems]
recipe[chef_rvm::wrappers]
recipe[chef_rvm::aliases]

Author

Nikolay Murga