Adoptable Cookbooks List

Looking for a cookbook to adopt? You can now see a list of cookbooks available for adoption!
List of Adoptable Cookbooks

Supermarket Belongs to the Community

Supermarket belongs to the community. While Chef has the responsibility to keep it running and be stewards of its functionality, what it does and how it works is driven by the community. The chef/supermarket repository will continue to be where development of the Supermarket application takes place. Come be part of shaping the direction of Supermarket by opening issues and pull requests or by joining us on the Chef Mailing List.

Select Badges

Select Supported Platforms


anaconda (12) Versions 0.5.0

Installs/Configures anaconda

cookbook 'anaconda', '= 0.5.0'
cookbook 'anaconda', '= 0.5.0', :supermarket
knife supermarket install anaconda
knife supermarket download anaconda
Quality -%

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:


This repo has only been tested with RVM; YMMV with other installation methods (rbenv, chef-dk, etc).

It sounds like Chef-DK is the new recommended installation path, but I have not had a good experience with it (as of 0.1.0-1). Again, YMMV.


The [Vagrantfile](Vagrantfile) is written to get you an Anaconda environment with minimal effort (though it will take at least a few minutes to download the Anaconda installer itself):

$> vagrant up --provision

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

# if you included `recipe[anaconda::shell_conveniences]` you don't have to do anything;
# it's sourced in /etc/profile.d
$> vagrant ssh
$vagrant> conda --version
conda 3.10.0

In addition, by default an IPython notebook server is enabled and started:

To use it in a cookbook:

include_recipe 'anaconda::default'

Warning! If you're also using the python cookbook...

You MUST include recipe[anaconda::python_workaround], otherwise subsequent chef runs will fail. See the issue for details.

Usage, recipes, attributes, and resources

The main recipe is 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](attributes/default.rb) for default values.

  • anaconda
    • version: the version to install. Valid values are:
    • 1.8.0
    • 1.9.2
    • 2.0.1
    • 2.1.0
    • 2.2.0
    • miniconda-python2
    • miniconda-python3
    • 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


Include this to have the environment set for all users (login shells) via /etc/profile.d. Useful for development.

$> vagrant ssh
$vagrant> which conda

resource anaconda_package

You can use the anaconda_package resource to install new packages into the Anaconda environment:

# I do not know what 'astroid' is, just using it as a sample package
anaconda_package 'astroid' do
  # the other supported action is `:remove`
  action :install

See the [resource definition](resources/package.rb) for additional options; in general, all it does is present the same options as conda install/conda remove.

resource anaconda_nbservice

This only works with a full Anaconda installation! I.e. the notebook service will not work out-of-the-box if installed with miniconda

The anaconda_nbservice will run an IPython notebook server as a runit service:

anaconda_nbservice 'notebook-server' do
  # listen on all interfaces; there will be a warning since security is
  # disabled
  ip '*'
  port '8888'

  user 'vagrant'
  group 'vagrant'

  install_dir '/opt/ipython/server'

  service_action [ :enable, :start ]

The standard configuration should be good enough, but you might need to write your own run service template:

anaconda_nbservice 'server-with-custom-template' do
  user ipython_user
  group ipython_group

  install_dir install_dir

  template_cookbook 'your_cookbook'
  # note that if your template name is TEMPLATE, then this value should be
  # 'TEMPLATE", but the file should be 'sv-TEMPLATE-run.erb'
  run_template_name 'your_template_name'

  service_action [ :enable, :start ]


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](spec/default_spec.rb):

$> rspec

Run just the test kitchen serverspec [integration tests](test/integration/default/serverspec/default_spec.rb):

# this is what takes so long: every platform and version is fully built in vagrant
# the list of OSes is defined in [.kitchen.yml](.kitchen.yml)
$> kitchen verify

# test a specific OS; `kitchen list`
$> kitchen verify default-ubuntu-1204

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)
  • figure out how to publish onto; the documentation is unbelievably bad


Author:: Matt Chu (

Dependent cookbooks

runit >= 0.0.0
apt >= 0.0.0

Contingent cookbooks

There are no cookbooks that are contingent upon this one.



  • Upgraded to Anaconda 2.2.0 from 2.0.1
    • Includes support for Anaconda 2.1.0
  • Added support for Miniconda
  • Upgraded Vagrantfile:
    • Upgraded Chef from 11.16+ to 12+ to match Kitchen tests
    • Upgraded OS from 12.04 to 14.04


Backwards-compatible fix for issue when using both the python cookbook and this one. Issue:


Unintended release, thanks to Chef Supermarket's crappiness.


New resource 'anaconda_nbservice', for running an IPython notebook server. Somewhat experimental, it's fairly basic but usable.


Hotfix release:


Major cleanup and basic usability fixes (read: almost not sure why it worked before, if it even did):

  • (core, breaking) Renamed anaconda::shell-conveniences to anaconda::shell_conveniences
  • (core, breaking) No longer uses the python cookbook; this caused problems after anaconda was installed
  • (core) shell_conveniences now installs into /etc/profile.d, so it is automatically sourced by login shells
  • (core) Ubuntu 14.04 is now a supported (and fully tested) platform
  • (core) Ubuntu 14.04 is now the default platform used in the sample Vagrantfile
  • (core) Vagrantfile now correctly installs Anaconda, like the README said it was supposed to
  • (docs) various readme updates
  • (testing) Complete coverage of all resources in chefspec
  • (testing) Removed Ubuntu 12.10 and 13.04 from kitchen testing; there's something wrong with apt-get on these images. It appears to be something about the apt keys, but they're just removed from testing for now.


Bugfix release:

  • Fixes related to install script and permissions (#5). Courtesy @mwalton236


New resource: anaconda_package, for installing and removing packages via conda


Rewrote all project history


Fix incorrect checksums for Anaconda 2.0.1


Feature improvments:

  • updated the default installation to Anaconda 2.0.1, from 1.9.2


  • minor cibuild improvement to ensure clean tests
  • minor code changes to support updated toolchain
  • removed Chef Development Kit recommendation after experimenting with it

No quality metric results found