Skip to content
This repository has been archived by the owner on Jan 9, 2019. It is now read-only.

tmatilai/chef-ruby_pkg

 
 

Repository files navigation

ruby_pkg

Build Status Dependency Status

Table of Contents

Description

A Chef cookbook with knife-solo and Vagrant setups for building and packaging a specified Ruby version.

Requirements

Should work on Debian and Enterprise Linux based distributions. Other platforms (that ruby_build and fpm support) should be possible to add. Please open an issue or pull request if interested.

Requires ruby_build and fpm-tng community cookbooks.

Usage

The easiest way to build the Ruby package is by using the included knife-solo or Vagrant setup. You can of course use the cookbook also directly by adding it to run_list or by including it in your own cookbooks.

To use knife-solo or Vagrant you need to use the full source repository version. You can download and extract a tarball release or clone the git repository:

    $ git clone https://github.com/reaktor/chef-ruby_pkg.git ruby_pkg
    $ cd ruby_pkg

knife-solo

Requirements

  1. Install Ruby (1.9.3 or later) and Bundler

  2. Install knife-solo and dependencies:

     $ bundle install --without development:test
    

Building with knife-solo

  1. Copy ./nodes/example.json to for example ./nodes/myruby.json and edit it to match your wishes. See Attributes for possible options.

  2. Bootstrap the server. Installs Chef and other knife-solo requirements and then builds and packages the specified Ruby version:

     $ bundle exec knife solo bootstrap <user@host> nodes/myruby.json
    

    You can also use knife-ec2, knife-digital_ocean, etc. For example:

     $ gem install knife-ec2
     $ knife ec2 server create --node-name=myruby <other_ec2_options>...
     # note the FQDN/IP for next phase
    

    If the server is already prepared, you can run only the converge phase:

     $ bundle exec knife solo cook <user@host> nodes/myruby.json
    
  3. Fetch the package from the server. For example:

     $ scp <user@host>:/tmp/debian-7.0_ruby-1.9.3-p448-1_amd64.deb pkg/
    

Vagrant

Install Vagrant environment

  1. Install Vagrant v1.2 or later

  2. Install needed Vagrant plugins:

     $ vagrant plugin install vagrant-berkshelf
     $ vagrant plugin install vagrant-omnibus
    
  3. Add your favorite Vagrant box, for example:

     $ vagrant box add "ubuntu-12.04" "http://files.vagrantup.com/precise64.box"
    

Building with Vagrant

Spin up the box to build and package a specified Ruby version:

$ VERSION="2.0.0-p247" BOX="ubuntu-12.04" vagrant up

The package will be created to pkg directory.

Environment variables for Vagrant

  • $BOX - The Vagrant box name. Defaults to "squeeze-6.0".
  • $DEBUG - If set, enable debug logging of the Chef run.
  • $VERSION - The Ruby version to package. Passed to ruby_build. Defaults to "1.9.3-p448"
  • $ITERATION - The package iteration version number. Passed to fpm. Defaults to 1.
  • $MAINTAINER - The (optional) package maintainer. Passed to fpm.

Recipes

  • default - Includes other recipes to build and package the specified Ruby version.
  • build - Builds the specified Ruby version.
  • package - Makes a package from the specified (and formerly built) Ruby version.

Attributes

  • node['ruby_pkg']['ruby_version'] - The Ruby version to build. Defaults to "1.9.3-p448".
  • node['ruby_pkg']['iteration'] - The iteration/revision number of the package. Defaults to 1.
  • node['ruby_pkg']['base_dir'] - The base directory where the Ruby versions will be installed. Defaults to "/usr/local/ruby".
  • node['ruby_pkg']['pkg_dir'] - The directory where the package will be built. Defaults to "/tmp".
  • node['ruby_pkg']['maintainer'] - The optional maintainer field. Defaults to nil.

License and Author

Author:: Teemu Matilainen <teemu.matilainen@reaktor.fi>

Copyright © 2013, Reaktor Innovations Oy

Licensed under the Apache License, Version 2.0. See LICENSE.

About

Development repo for Chef "ruby_pkg" Cookbook with knife-solo and Vagrant setups

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Ruby 94.1%
  • Shell 5.9%