cookbook 'chruby-build', '= 1.0.0', :supermarket
chruby-build (12) Versions 1.0.0 Follow3
Chef cookbook to install chruby and build rubies from source with Google Perftools and LibYAML options.
cookbook 'chruby-build', '= 1.0.0'
knife supermarket install chruby-build
knife supermarket download chruby-build
Chruby Build Chef Cookbook
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
-
ark >= 4.0.0
- Opscode Cookbook ark
version
chef >= 13.4
Installation
From the Community Site
Use the knife command:
$ knife cookbook site install chruby-build
With librarian-chef
Edit Cheffile
site "https://supermarket.chef.io/api/v1"
cookbook 'chruby-build', '~> 0.4.0'
Resolves and installs all of the dependencies:
$ librarian-chef install
With berkshelf
Edit Berksfile
source "https://supermarket.getchef.com"
cookbook 'chruby-build', '~> 0.4.0'
Install the cookbooks you specified in the Berksfile and their dependencies:
$ berks install
Attributes
See [attributes/default.rb](attributes/default.rb)
<table> <tr> <th>Description</th> <th>Type</th> <th>Default</th> </tr> <tr> <td colspan="3"><tt>['chruby_build']['version']</tt></td> </tr> <tr> <td>chruby version</td> <td>String</td> <td><tt>"0.3.9"</tt></td> </tr> <tr> <td colspan="3"><tt>['chruby_build']['checksum']</tt></td> </tr> <tr> <td>chruby checksum (SHA256)</td> <td>String</td> <td><tt>"7220a96e355b8a613929881c091ca85ec809153988d7d691299e0a16806b42fd"</tt></td> </tr> <tr> <td colspan="3"><tt>['chruby_build']['auto_switching']</tt></td> </tr> <tr> <td>chruby auto switching</td> <td>Boolean</td> <td><tt>true</tt></td> </tr> <tr> <td colspan="3"><tt>['chruby_build']['rubies']</tt></td> </tr> <tr> <td>rubies to install</td> <td>Array</td> <td><tt>[]</tt></td> </tr> <tr> <td colspan="3"><tt>['chruby_build']['rubies_path']</tt></td> </tr> <tr> <td>path to install rubies</td> <td>String</td> <td><tt>"/opt/rubies"</tt></td> </tr> <tr> <td colspan="3"><tt>['chruby_build']['rubies_libs']</tt></td> </tr> <tr> <td>usefull libraries to install</td> <td>Array</td> <td><tt>["libssl-dev", "libreadline-dev", "zlib1g-dev"]</tt></td> </tr> <tr> <td colspan="3"><tt>['chruby_build']['google_perftools']['enable']</tt></td> </tr> <tr> <td>compile rubies with google_perftools (tcmalloc)</td> <td>Boolean</td> <td><tt>true</tt></td> </tr> <tr> <td colspan="3"><tt>['chruby_build']['google_perftools']['url']</tt></td> </tr> <tr> <td>google_perftools url</td> <td>String</td> <td><tt>"https://github.com/gperftools/gperftools/archive/gperftools-2.7.tar.gz"</tt></td> </tr> <tr> <td colspan="3"><tt>['chruby_build']['google_perftools']['version']</tt></td> </tr> <tr> <td>google_perftools version</td> <td>String</td> <td><tt>"2.7"</tt></td> </tr> <tr> <td colspan="3"><tt>['chruby_build']['google_perftools']['checksum']</tt></td> </tr> <tr> <td>google_perftools checksum</td> <td>String</td> <td><tt>"3a88b4544315d550c87db5c96775496243fb91aa2cea88d2b845f65823f3d38a"</tt></td> </tr> <tr> <td colspan="3"><tt>['chruby_build']['libyaml']['enable']</tt></td> </tr> <tr> <td>compile libyaml (latest release)</td> <td>Boolean</td> <td><tt>true</tt></td> </tr> <tr> <td colspan="3"><tt>['chruby_build']['libyaml']['url']</tt></td> </tr> <tr> <td>libyaml url</td> <td>String</td> <td><tt>"https://pyyaml.org/download/libyaml/yaml-0.2.1.tar.gz"</tt></td> </tr> <tr> <td colspan="3"><tt>['chruby_build']['libyaml']['version']</tt></td> </tr> <tr> <td>libyaml version</td> <td>String</td> <td><tt>"0.2.1"</tt></td> </tr> <tr> <td colspan="3"><tt>['chruby_build']['libyaml']['checksum']</tt></td> </tr> <tr> <td>libyaml checksum</td> <td>String</td> <td><tt>"78281145641a080fb32d6e7a87b9c0664d611dcb4d542e90baf731f51cbb59cd"</tt></td> </tr> </table>
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"
}
}
]
}
}
With data bags
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
- Fork the repository on Github
- Create a named feature branch (like
add_component_x
) - Write your change
- Write tests for your change (if applicable)
- Run the tests, ensuring they all pass
- 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](LICENSE.txt).
Dependent cookbooks
ark >= 4.0.0 |
Contingent cookbooks
There are no cookbooks that are contingent upon this one.
Collaborator Number Metric
1.0.0 failed this metric
Failure: Cookbook has 0 collaborators. A cookbook must have at least 2 collaborators to pass this metric.
Contributing File Metric
1.0.0 failed this metric
Failure: To pass this metric, your cookbook metadata must include a source url, the source url must be in the form of https://github.com/user/repo, and your repo must contain a CONTRIBUTING.md file
Foodcritic Metric
1.0.0 failed this metric
FC120: Do not set the name property directly on a resource: chruby-build/recipes/rubies.rb:97
Run with Foodcritic Version 14.3.0 with tags metadata,correctness ~FC031 ~FC045 and failure tags any
No Binaries Metric
1.0.0 passed this metric
Publish Metric
1.0.0 passed this metric
Supported Platforms Metric
1.0.0 passed this metric
Testing File Metric
1.0.0 failed this metric
Failure: To pass this metric, your cookbook metadata must include a source url, the source url must be in the form of https://github.com/user/repo, and your repo must contain a TESTING.md file
Version Tag Metric
1.0.0 passed this metric
1.0.0 failed this metric
1.0.0 failed this metric
Failure: To pass this metric, your cookbook metadata must include a source url, the source url must be in the form of https://github.com/user/repo, and your repo must contain a CONTRIBUTING.md file
Foodcritic Metric
1.0.0 failed this metric
FC120: Do not set the name property directly on a resource: chruby-build/recipes/rubies.rb:97
Run with Foodcritic Version 14.3.0 with tags metadata,correctness ~FC031 ~FC045 and failure tags any
No Binaries Metric
1.0.0 passed this metric
Publish Metric
1.0.0 passed this metric
Supported Platforms Metric
1.0.0 passed this metric
Testing File Metric
1.0.0 failed this metric
Failure: To pass this metric, your cookbook metadata must include a source url, the source url must be in the form of https://github.com/user/repo, and your repo must contain a TESTING.md file
Version Tag Metric
1.0.0 passed this metric
1.0.0 failed this metric
Run with Foodcritic Version 14.3.0 with tags metadata,correctness ~FC031 ~FC045 and failure tags any
1.0.0 passed this metric
Publish Metric
1.0.0 passed this metric
Supported Platforms Metric
1.0.0 passed this metric
Testing File Metric
1.0.0 failed this metric
Failure: To pass this metric, your cookbook metadata must include a source url, the source url must be in the form of https://github.com/user/repo, and your repo must contain a TESTING.md file
Version Tag Metric
1.0.0 passed this metric
1.0.0 passed this metric
1.0.0 passed this metric
Testing File Metric
1.0.0 failed this metric
Failure: To pass this metric, your cookbook metadata must include a source url, the source url must be in the form of https://github.com/user/repo, and your repo must contain a TESTING.md file
Version Tag Metric
1.0.0 passed this metric
1.0.0 failed this metric
1.0.0 passed this metric