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

Select Status

The hubot cookbook has been deprecated

Author provided reason for deprecation:

The hubot cookbook has been deprecated and is no longer being maintained by its authors. Use of the hubot cookbook is no longer recommended.


hubot (8) Versions 1.0.6

Deploys and manages an instance of Github's Hubot.

cookbook 'hubot', '= 1.0.6', :supermarket
cookbook 'hubot', '= 1.0.6'
knife supermarket install hubot
knife supermarket download hubot
Quality 57%

hubot cookbook

Build Status

Deploys and manages an instance of GitHub's Hubot.


Include recipe[hubot] in your run_list and override the defaults you want
changed. See below for more details. Hubot instances are
configured using environment variables passed to the Hubot process. These
environment variables can be set using the node['hubot']['config'] attribute.

I hightly recommend integrating this cookbook into your own infrastruce using
library/application cookbook pattern.
You would start by creating a YOURCOMPANY-hubot cookbook with a proper
metadata depedency on the hubot (this) cookbook. A concrete example can be
found on this gist
which was created from bits of the internal opscode-hubot cookbook which we
use to deploy, Paula Deen, Opscode's hubot instance.

One important item to note is the use of the
resource to distribute our internal hubot scripts to the install:

remote_directory "#{node['hubot']['install_dir']}/scripts" do
  source "scripts"
  files_backup 0
  files_owner node['hubot']['user']
  files_group node['hubot']['group']
  files_mode '0644'
  owner node['hubot']['user']
  group node['hubot']['group']
  overwrite true
  mode '0755'
  notifies :restart, "service[hubot]", :delayed



Tested on Chef 11/12


The following platforms have been tested with this cookbook, meaning that the
recipes and LWRPs run on these platforms without error:

  • Ubuntu 10.04+
  • RHEL/Centos 6


This cookbook depends on the following external cookbooks:



  • Ensures that Node.js is installed and available using the nodejs cookbook.
  • Ensures git is installed and available using the git cookbook.
  • Ensures runit is installed and available using the runit cookbook.
  • Creates a user and group to install and run the Hubot instance under.
  • Installs the specified Hubot version from git.
  • Renders instance-specific package.json, external-scripts.json, hubot-scripts.json, and hubot.conf files.
  • Creates and enables a hubot runit service to run the Hubot instance under. The runit service reads the hubot.conf file and passes the contents onto the underlying hubot process as configuraiton.


Attribute Description Type Default
version Hubot version to install. String 2.11.0
scripts_version Version of hubot-scripts (community collection of hubot scripts) to install. String 2.5.16
install_dir Directory the Hubot instance will be installed to. String /opt/hubot
user The user to install and run the Hubot instance under. String hubot
group The group to install and run the Hubot instance under. String hubot
name The name of the robot in chat. String hubot
adapter The Hubot adapter to use. String campfire
config Hash of values that will be converted into environment variables and passed to the Hubot process. Hash
dependencies Hash in form dep_name => dep_version that will be rendered into Hubot instance's package.json. A common dep to set in this attribute is non-Campfire adapters. Hash
hubot_scripts Scripts to enable from the community collection of hubot scripts. Array
external_scripts External scripts to enable. Array


This cookbook ships with full support for the new alpha version of Opscode's
test-kitchen. Fletcher Nichol's excellent Jamie
integration test runner was
recently merged into the test-kitchen codebase.
This merge and all new feature work are now taking place in the
1.0 branch of test-kitchen.
Even though many community members have been dogfooding the new test-kitchen
codebase and it has proven quite stable, it should still be regarded as
pre-release code and YMMV.

Running integration with test-kitchen is easy. First we'll assume you have a
sane cookbook development toolchain installed which includes:

  • Git
  • Ruby 1.9.x
  • Bundler
  • VirtualBox 4.x

If you need help setting up this toolchain, take a read through the
"System Setup"
section of Jamie Winsor's excellent cookbook
authoring guide.

First install all gem dependencies with Bundler:

$ bundle install --binstubs

Bundler will install all of the dependent RubyGems and guarantee that you have
the right versions. Now it's time to get your test on:

$ bundle exec kitchen test

This command will do the following across every platform/version this cookbook

  • Use Vagrant to provision a platform-specific VM.
  • Add a recipe[hubot] entry to the instance's run_list.
  • Converge the VM with chef-solo.

By default, any VM that successfully converges will automaticallly be cleaned
up. The full set of kitchen subcommands can be viewed by running:

$ bundle exec kitchen help


  • Source hosted at [GitHub][repo]
  • Report issues/Questions/Feature requests on [GitHub Issues][issues]

I <3 pull requests! Make sure your patches are well tested. Ideally create a
topic branch for every separate feature/fix you make.

License and Author

Author:: [Seth Chisamore][schisamo] (

Author:: [Tim Smith][tas50] (

Copyright (c) 2013-2015, Seth Chisamore

Copyright (c) 2015, Tim Smith

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
See the License for the specific language governing permissions and
limitations under the License.

Dependent cookbooks

git >= 0.0.0
nodejs >= 0.0.0
runit >= 0.0.0
supervisor >= 0.0.0

Contingent cookbooks

There are no cookbooks that are contingent upon this one.


  • Allowing runit to use default log template (logging into /var/log/hubot)
  • Rubocop & Foocritic compliance
  • Chef & npm dependencies updated
  • Now using hubot 2.12.0 in defaults
  • Allowing to choose Hubot git source repo ('v' is still appended in the version tag)
  • Using nodejs_npm LWRP (from nodejs cookbook) instead of execute resources
  • Adding supervisor init system capability (runit is still the default one)
  • No longer using --create for new versions of Hubot
  • Updated base dependencies for the latest Hubot releases
  • Added a new attribute for managing external scripts file
  • Remove the chmod of the hubot bin file
  • Fixes to the Readme to properly document attributes and requirements


Many thanks to Seth for creating this cookbook and for being kind enough to pass the cookbook maintenance onto me. I hope to keep things up to date for all the Hubot users out there.

  • Updated Gem dependencies to the latest releases of upstream projects
  • Removed Ubuntu 12.10 from test kitchen
  • Added a Rubocop config and resolved all rubocop warnings
  • Removed the use of Thor
  • Use strings for file modes to ensure that the leading 0 is respected
  • Don't set nodejs install attributes based on platform. Let users decide how to install NodeJS
  • Use https for the git checkout not GIT to work around strict firewalls
  • Defaulting package.json "private": true with a new attribute: default['hubot']['private']
  • Quote all config vars so that spaces don't cause kabooms
  • Use runit's env param so that environment variables can handle numeric values and values with spaces
  • Use standard OS baseboxes in kitchen.yml


Bug Fixes

  • recursively create the install dir
  • install exact version of hubot and hubot-scripts

New features

  • Add kitchen-ec2 to the Gemfile (allows testing against EC2)


  • Sort and append newline to the entries in hubot-scripts.json
  • Flesh out the 'Usage' section of the README
  • Silence :rubygems Bundler deprecation notice.
  • Download Ubuntu base boxes from Thanks @jeremiahsnapp!


Bug Fixes

  • Install node.js from source on all platform families except Debian. This is a workaround for issue mdxp/nodejs-cookbook#19 in the upstream nodejs cookbook. Installing node.js from RPM is no longer possible on Fedora/RHEL/CentOS as the packages are no longer maintained.

New features

  • test-kitchen 1.0 support


  • Pull request #1: Fix typo in README. (@streeter)
  • Remove references to CentOS 5.5 support
  • Add proper supports fields to metadata


  • The initial release. Cookbooks was inspired by internal cookbook Opscode uses to deploy our instance of hubot, but refactored/modenerized based on current cookbook development best practices.

Collaborator Number Metric

1.0.6 passed this metric

Contributing File Metric

1.0.6 passed this metric

Foodcritic Metric

1.0.6 failed this metric

FC064: Ensure issues_url is set in metadata: hubot/metadata.rb:1
FC065: Ensure source_url is set in metadata: hubot/metadata.rb:1
FC066: Ensure chef_version is set in metadata: hubot/metadata.rb:1
FC069: Ensure standardized license defined in metadata: hubot/metadata.rb:1
Run with Foodcritic Version 10.3.1 with tags metadata,correctness ~FC031 ~FC045 and failure tags any

License Metric

1.0.6 passed this metric

No Binaries Metric

1.0.6 passed this metric

Testing File Metric

1.0.6 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, and your repo must contain a file

Version Tag Metric

1.0.6 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, and your repo must include a tag that matches this cookbook version number