Engine Yard Recipes
Tools to generate, upload, test and apply chef recipes for Engine Yard Cloud.
Installation
gem install engineyard-recipes
Quick Guide
$ cd /path/to/my/app
$ ey-recipes init # initial scaffolding for cookbooks
$ ey-recipes package somepackage
$ ey-recipes definition somehelpers specific_helper_method
$ git clone git://github.com/damm/ey-dnapi.git /tmp/recipes/ey-dnapi
$ ey-recipes clone /tmp/recipes/ey-dnapi
# then to upload and apply to your environment
$ ey recipes upload --apply
Alternately, you can have chef recipes run during deployment rather than by explicitly running them:
$ cd /path/to/my/app
$ ey-recipes init -d
$ ey-recipes package somepackage
# then deploy to apply recipes
$ ey deploy
Usage
Getting started:
$ cd /path/to/my/app
$ ey-recipes init
create cookbooks/main/attributes/recipe.rb
create cookbooks/main/definitions/ey_cloud_report.rb
create cookbooks/main/libraries/ruby_block.rb
create cookbooks/main/libraries/run_for_app.rb
create cookbooks/main/recipes/default.rb
$ ey recipes upload
$ ey recipes apply
The -d
or --on-deploy
flag will setup your application to run recipes during each deployment.
$ cd /path/to/my/app
$ ey-recipes init --on-deploy
create deploy/before_migrate.rb
create deploy/solo.rb
create deploy/cookbooks/main/attributes/recipe.rb
create deploy/cookbooks/main/definitions/ey_cloud_report.rb
create deploy/cookbooks/main/libraries/ruby_block.rb
create deploy/cookbooks/main/libraries/run_for_app.rb
create deploy/cookbooks/main/recipes/default.rb
$ ey deploy
Quickly generate recipes from git repositories or local folders. See bottom of README for community examples.
Either repos that describe a recipe such as ey-dnapi:
$ mkdir /tmp/recipes/
$ git clone git://github.com/damm/ey-dnapi.git /tmp/recipes/ey-dnapi
$ ey-recipes clone /tmp/recipes/ey-dnapi
Generate scaffolding for a package/service.
$ ey-recipes package newthing
create cookbooks/newthing/attributes/recipe.rb
create cookbooks/newthing/recipes/default.rb
create cookbooks/newthing/recipes/install.rb
append cookbooks/main/recipes/default.rb
Specify an explicit Gentoo package.
$ ey-recipes package gitosis -p dev-util/gitosis-gentoo -v 0.2_p20081028
$ ey-recipes package qt-webkit -p x11-libs/qt-webkit -v 4.4.2 -u
To use a masked package, pass the --unmasked/-u
flag, and install the emerge
helper described below.
Generate scaffolding for helper functions:
$ ey-recipes definition myhelpers some_helper
create cookbooks/mylibrary/definitions/helper1.rb
Community recipe repos to clone
Components
- mongodb [repo]
$ git clone https://github.com/engineyard/ey-cloud-recipes.git /tmp/recipes/ey-cloud-recipes
$ ey-recipes clone /tmp/recipes/ey-cloud-recipes/cookbooks/mongodb
$ git clone https://github.com/damm/ey-elasticsearch.git /tmp/recipes/ey-elasticsearch
$ ey-recipes clone /tmp/recipes/ey-elasticsearch -n elasticsearch
$ git clone https://github.com/damm/ey-riak.git /tmp/recipes/ey-riak
$ ey-recipes clone /tmp/recipes/ey-riak -n riak
Either use riak above or riaksearch, not both!
$ git clone https://github.com/damm/ey-riaksearch.git /tmp/recipes/ey-riaksearch
$ ey-recipes clone /tmp/recipes/ey-riaksearch -n riaksearch
Environment Customizations
- database.yml [repo]
$ git clone https://github.com/damm/ey-database.git /tmp/recipes/ey-database
$ ey-recipes clone /tmp/recipes/ey-database
Also install ey-dnapi below.
Helpers
- ey-emerge - additional helpers to install/use masked packages [repo]
$ git clone https://github.com/engineyard/ey-cloud-recipes.git /tmp/recipes/ey-cloud-recipes
$ ey-recipes clone /tmp/recipes/ey-cloud-recipes/cookbooks/emerge
- ey-dnapi - access the internal dna.json metadata via
node[:engineyard]
[repo]
$ git clone https://github.com/damm/ey-dnapi.git /tmp/recipes/ey-dnapi
$ ey-recipes clone /tmp/recipes/ey-dnapi -n dnapi
Development
Tests
The tests are currently a suite of Cucumber tests that run the generators and assert that specific files are generated. It does not test the generated files/recipes against EY Cloud.
bundle exec rake # to run all non-WIP tests
bundle exec rake cucumber:wip # to run all WIP tests
CI
See the latest CI build results on Travis (for ruby 1.8.7, 1.9.3, rbx and jruby)
From the command line:
bundle exec rake travis
Not sure why its failing.
Release
- Push the changes to master. This triggers the CI build on TravisCI.
- Wait for the build to complete successfully.1. Bump the VERSION number in
lib/engineyard-recipes/version.rb
- Update the ChangeLog.md file
- Commit the changes
- Release
bundle exec rake release