remaining cleanup, cookbook rename
9 files changed
tree: 972727074367010f2e7af04713e5c7675272e54d
  1. .bundle/
  2. attributes/
  3. definitions/
  4. files/
  5. libraries/
  6. providers/
  7. recipes/
  8. resources/
  9. script/
  10. spec/
  11. templates/
  12. test/
  13. .gitignore
  14. .kitchen.yml
  15. .ruby-gemset
  16. .ruby-version
  17. Berksfile
  19. chefignore
  20. Gemfile
  22. metadata.rb
  24. Thorfile
  25. Vagrantfile

anaconda cookbook

Chef cookbook for installing Continuum Analytic's Anaconda: "completely free Python distribution for large-scale data processing, predictive analytics, and scientific computing".

This also serves as a live example of the most up-to-date best practices for writing, maintaining, and testing Chef cookbooks:



The Vagrantfile is written to get you an Anaconda environment with minimal effort:

$> vagrant up --provision

$> vagrant ssh
$vagrant> export PATH=/opt/anaconda/1.9.2/bin:${PATH}
$vagrant> conda --version
conda 3.4.1

To use it in a cookbook:

include_recipe 'anaconda::default'

Usage, recipes, and attributes

This cookbook only has one recipe: anaconda::default. Include it in your runlist, and it will install the package as well as any necessary dependencies.

The following are user-configurable attributes. Check attributes/default.rb for default values.

  • anaconda
    • version: the version to install
    • flavor: either x86 (32-bit) or x86_64 (64-bit)
    • install_root: the parent directory of all anaconda installs. note that individual installs go into #{install_root}/#{version}
    • accept_license: must be explicitly set to the string yes; any other value will reject the license.
    • owner: the user who owns the install
    • group: the group who owns the install


Run the full test suite:

# this will take a really long time
$> script/cibuild

# check the final result; bash return codes: 0 is good, anything else is not
$> echo $?

Run just the chefspecs:

$> rspec

Run just the test kitchen serverspec integration tests:

# this is what takes so long: every platform and version is fully built in vagrant
$> kitchen verify

Check the style with Foodcritic:

$> foodcritic

Releases and issues

Standard stuff:

  • master is the active version in development
  • releases are made with Github, and git tag'ed

Issues should be opened in the Github issue tracker


  • autodetect 64-bit versus 32
  • (TODO does it matter? who uses it?) populate metadata.rb: suggests, supports, etc
  • add a pre-provision for kitchen tests to avoid redownloading the installer on every test (really slows down the tests)


Author:: Matt Chu (