Sprout Orchard is a set of scripts (bash & ruby) which run a selection of Chef recipes in Pivotal Sprout as specified by the meta-recipes in Sprout Wrap in order to create OS X disk images which are deployed via DeployStudio.
Sprout Orchard delivers a disk image which we can use to quickly (~20 minutes) bring a freshly-unboxed OS X machine to a useful state.
In our case, we use it for our developer workstations. Our developers use a variety of tools (IDEs such as RubyMine, editors such as vim and TextMate, databases such as MySQL and PostgrSQL, applications such as Chrome and Skype). When we give a developer a new machine, it is pre-loaded with those items.
Our process of building a developer workstation is encapsulated in a series of Chef recipes (i.e. Sprout, Sprout-wrap). Sprout Orchard pre-bakes those recipes in a disk image. Installing the disk image is faster than running the Chef recipes on each new workstation. Also, having a disk image spares the developer from problems such as inaccessible download servers, stale URLs, etc.
The process is fairly automated. A typical workflow is as follows:
- A developer updates a recipe (e.g. Sublime Text) and pushes to Pivotal-sprout's sprout repo on github
- A Sprout Orchard Jenkins server detects that there has been an update to the repo and begins a build
- At the end of the build (assuming success), the resulting disk image, with the new TextMate, is copied to the DeployStudio server
If you're interested in setting it up yourself, please refer to the wiki
You'll need the following:
- A DeployStudio server
- A Jenkins server (can also be the same machine as the DeployStudio server)
- An OS X build machine (it can be a virtual machine running under VMWare Fusion)
This process doesn't capture recovery partitions (i.e. a newly-imaged machine won't have a recovery partition); however, this is workable by creating a package which installs a recovery partition. This blogpost has good information.
The build process will frequently fail, a success rate of 20% is good. Failures can be caused by the DeployStudio share not mounted on boot by the OS X machine's "Persistent" personality, by stale download URLs, by offline download servers, by flawed gem dependencies, etc....
sprout-orchard started as a side project of Matthew Kocher and Brian Cunnie of Pivotal Labs in Summer 2011.