Skip to content

Chef cookbook to install chruby and build rubies from source with TCMalloc and LibYAML options on Ubuntu.

License

Notifications You must be signed in to change notification settings

madwork/chef-chruby-build

Repository files navigation

Chruby Build Chef Cookbook

Build Status Cookbook Version

Chef cookbook to install chruby and build rubies from source with Google Perftools / TCMalloc : Thread-Caching Malloc and LibYAML options.

Requirements

supports

  • ubuntu >= 12.04

depends

Installation

Use the knife command:

$ knife cookbook site install chruby-build

Edit Cheffile

site "https://supermarket.getchef.com/api/v1"

cookbook 'chruby-build', '~> 0.3.0'

Resolves and installs all of the dependencies:

$ librarian-chef install

Edit Berksfile

source "https://supermarket.getchef.com"

cookbook 'chruby-build', '~> 0.3.0'

Install the cookbooks you specified in the Berksfile and their dependencies:

$ berks install

Attributes

See attributes/default.rb

Description Type Default
['chruby_build']['version']
chruby version String "0.3.8"
['chruby_build']['checksum']
chruby checksum (SHA256) String "d980872cf2cd047b..."
['chruby_build']['auto_switching']
chruby auto switching Boolean true
['chruby_build']['rubies']
rubies to install Array []
['chruby_build']['rubies_path']
path to install rubies String "/opt/rubies"
['chruby_build']['rubies_libs']
usefull libraries to install Array ["libssl-dev", "libreadline-dev", "zlib1g-dev"]
['chruby_build']['google_perftools']['enable']
compile rubies with google_perftools (tcmalloc) Boolean true
['chruby_build']['google_perftools']['url']
google_perftools url String "https://gperftools.googlecode.com/files/gperftools-2.1.tar.gz"
['chruby_build']['google_perftools']['version']
google_perftools version String "2.1"
['chruby_build']['google_perftools']['checksum']
google_perftools checksum String "f3ade29924f89409..."
['chruby_build']['libyaml']['enable']
compile libyaml (latest release) Boolean true
['chruby_build']['libyaml']['url']
libyaml url String "http://pyyaml.org/download/libyaml/yaml-0.1.6.tar.gz"
['chruby_build']['libyaml']['version']
libyaml version String "0.1.6"
['chruby_build']['libyaml']['checksum']
libyaml checksum String "7da6971b4bd08a98..."

Usage

Rubies attributes

  • id - required id and must be split by a dash (eg. ruby-2.1.1)
  • url - required ruby source
  • checksum - optional sha256 package checksum
  • gems - optional gems to install
  • environment - optional compilation environment variables

With node attributes

{
  "ark": {
    "prefix_root": "/usr/local/src"
  },
  "chruby_build": {
    "rubies": [
      {
        "id": "ruby-2.1.1",
        "url": "http://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.1.tar.gz",
        "checksum": "c843df31ae88ed49f5393142b02b9a9f5a6557453805fd489a76fbafeae88941",
        "gems": ["bundler"],
        "environment": {
          "ARCHFLAGS": "-arch x86_64",
          "CFLAGS": "-g -O2",
          "CPPFLAGS": "-I/usr/include -I/usr/local/include"
        }
      }
    ]
  }
}

Data bag name must be rubies

$ knife data bag create rubies ruby-2.1.1

Edit data bag ruby-2.1.1.json

{
  "id": "ruby-2.1.1",
  "url": "http://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.1.tar.gz",
  "checksum": "c843df31ae88ed49f5393142b02b9a9f5a6557453805fd489a76fbafeae88941",
  "gems": ["bundler"],
  "environment": {
    "ARCHFLAGS": "-arch x86_64",
    "CFLAGS": "-g -O2",
    "CPPFLAGS": "-I/usr/include -I/usr/local/include"
  }
}

If you are using knife solo as provisioner, try knife-solo_data_bag.

Data bags have higher precedence.

Recipes

chruby-build::default

This recipe only install chruby.

Just include chruby-build::default in your node's run_list:

{
  "name":"my_node",
  "run_list": [
    "recipe[chruby-build::default]"
  ]
}

chruby-build::rubies

This recipe install chruby and compile rubies from source.

Just include chruby-build::rubies in your node's run_list:

{
  "name":"my_node",
  "run_list": [
    "recipe[chruby-build::rubies]"
  ]
}

Development

Dependencies

Installation

Ensure the gem dependencies are installed:

$ bundle install
$ bundle exec berks install

Running unit tests:

$ bundle exec rspec

Running integration tests:

$ bundle exec kitchen test rubies-data-bags-ubuntu-1404

Different test suites are available:

$ bundle exec kitchen list
$ bundle exec kitchen setup default-ubuntu-1404
$ bundle exec kitchen verify default-ubuntu-1404
$ bundle exec kitchen destroy default-ubuntu-1404

Todo

  • Add convenient LWRP to build rubies

Contributing

  1. Fork the repository on Github
  2. Create a named feature branch (like add_component_x)
  3. Write your change
  4. Write tests for your change (if applicable)
  5. Run the tests, ensuring they all pass
  6. Submit a Pull Request using Github

License

Written by Vincent Durand.

Released under the terms of the MIT License. For further information, please see the file LICENSE.txt.

About

Chef cookbook to install chruby and build rubies from source with TCMalloc and LibYAML options on Ubuntu.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published