= Shipyard technical overview = Shipyard has a lot of independent moving parts that come together to create an automated system. This is done to aid reliability (small components are easier to design and debug) and reuse (eg. Orchestra is a generic tool for Getting Stuff Done, it's not specific to shipyard). In true Web2.0 style, we wrote about most of the stack in a blog post, titled ''[[http://www.anchor.com.au/blog/2011/08/automate-all-the-things/| Automate All The Things]]''. It's a little long to grasp quickly, so let's run over the components: * '''make-magic''' - Turns a list of high-level requirements into a set of automatable steps, correctly ordered for dependencies. Also tracks completion for steps. * '''mudpuppy''' - The worker component that couples to make-magic. Polls make-magic for work, and does it. * '''Orchestra''' - Called by mudpuppy to perform tasks that it can't do itself. While mudpuppy works on the local automation system, Orchestra is like RPC on steroids. It gets stuff done, quickly and reliably. * '''puppet''' - Old faithful, puppet configures the server after it's built. mudpuppy will generate a node manifest as required and ensure that puppet is run as part of the build process.