DEPRECATED: A set of Chef cookbooks that build the octohost server using Packer, Terraform, Vagrant and knife solo.
Ruby Shell HCL HTML
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


NOTE: This project is no longer actively maintained. Use Dokku, Deis Workflow or Kubernetes.

Octohost Cookbook


Required to build:

  1. Packer - 0.7.5+ - for AWS, Rackspace and DigitalOcean.
  2. Vagrant - 1.7.0+
  3. VirtualBox - 4.3+
  4. Ruby 2.0+ with Bundler and Rake - cd octohost-cookbook; bundle install - also works with ChefDK.
  5. A unix like platform - this is built on OS X and may not work on Windows. (Patches are welcome.)


Supported on Ubuntu 14.04LTS.


  1. apt
  2. octobase
  3. docker
  4. gitreceive
  5. firewall
  6. rsyslog
  7. packagecloud


There are lots of attributes available in each of the dependant cookbooks - we're not overriding any of them in this cookbook.

If you're building on Vagrant, please view the note below.



Builds the octohost server using Chef.

To get started with this repo:

git clone
cd octohost-cookbook
bundle install
berks install

Then you should be able to build any of the images.

Packer Build

In order to build an Amazon AMI, DigitalOcean Droplet or Rackspace OpenStack image, you will need accounts for each. Export these values to get Packer to honor them automatically:

# Rackspace
export SDK_USERNAME="username"  # Same as here:
export SDK_PASSWORD="password-to-login" # Not the API key.
export SDK_PROVIDER="rackspace-us" # Or rackspace-uk

# EC2 - can be found here:
export AWS_ACCESS_KEY="long-random-string"
export AWS_SECRET_KEY="another-even-longer-long-random-string"

# Digital Ocean - get these here:
export DIGITALOCEAN_API_TOKEN="long-random-string"

You may have to use a different source image for Rackspace - Rackspace doesn't allow you to share them.

I built my source image from this related repo.

Vagrant Build

An already created Vagrant box is available at here - if you want to build your own read on.

Before you build the Vagrant box with rake build_vagrant - please update these attributes:

default['vagrant']['keys'] = ''
default['git']['keys'] = ''

The wildcard domain record * will work for anyone at An octohost is much more useful when your own keys are installed. Even though we can't get to your non-routable address, please don't install our keys on your server.

Once it's built and has your keys in it - package it up:

vagrant package default --output ~/Desktop/
vagrant box add octohost ~/Desktop/
vagrant init octohost

Add this line to the Vagrantfile: :private_network, ip: ""


vagrant up
git clone && cd harp
git remote add octo
git push octo master

You know have your own local, private octohost for development and testing - with a free wildcard dns record.

You're welcome.


Build Status

The cookbook provides the following Rake tasks for testing:

rake build                        # Syntax check and build all Packer targets
rake build_ami                    # Syntax check and build AMI
rake build_droplet                # Syntax check and build Droplet
rake build_gce                    # Syntax check and build Google Compute Image
rake build_openstack              # Syntax check and build Openstack Image
rake build_vagrant                # Syntax check and build Vagrant box
rake cleanup_vendor               # Cleanup Vendor directory
rake food_extra                   # Run extra Foodcritic rulesets
rake integration                  # Alias for kitchen:all
rake kitchen:all                  # Run all test instances
rake kitchen:default-ubuntu-1204  # Run default-ubuntu-1204 test instance
rake kitchen:default-ubuntu-1404  # Run default-ubuntu-1404 test instance
rake knife_solo                   # Usage: rake knife_solo user={user} ip={}
rake lint                         # Lint Chef cookbooks
rake rubocop                      # Run rubocop tests
rake spec                         # Run ChefSpec examples
rake tailor                       # Run tailor tests
rake taste                        # Run taste tests
rake test                         # Run all tests

License and Author

Author:: Darron Froese (

Copyright:: 2014, Darron Froese

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, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.


We welcome contributed improvements and bug fixes via the usual workflow:

  1. Fork this repository
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new pull request