Skip to content

Latest commit

 

History

History
198 lines (139 loc) · 4.39 KB

README.md

File metadata and controls

198 lines (139 loc) · 4.39 KB

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

version

  • chef >= 13.4

Installation

Use the knife command:

$ knife supermarket install chruby-build

Edit Berksfile

source "https://supermarket.chef.io"

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

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

$ berks install

Attributes

See attributes/default.rb

Usage

Rubies attributes

  • id - required id and must be split by a dash (eg. ruby-2.3.4)
  • 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.5.3",
        "url": "https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.3.tar.gz",
        "checksum": "9828d03852c37c20fa333a0264f2490f07338576734d910ee3fd538c9520846c",
        "gems": ["bundler 1.17.1"],
        "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.5.3

Edit data bag ruby-2.5.3.json

{
  "id": "ruby-2.5.3",
  "url": "https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.3.tar.gz",
  "checksum": "9828d03852c37c20fa333a0264f2490f07338576734d910ee3fd538c9520846c",
  "gems": ["bundler 1.17.1"],
  "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 installs 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 installs 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

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.