Hacker News new | ask | show | jobs
by zwischenzug 4338 days ago
I posted this on the site, thought some might be interested here (disclaimer: I'm the creator of ShutIt):

We had similar requirements in our company and ended up building our own tool for building containers in docker and shipping those. So far it's working out really well, particularly in the "ease of learning" department.

http://ianmiell.github.io/shutit/.

https://github.com/ianmiell/shutit https://github.com/ianmiell/shutit/blob/master/README.md

http://shutit.tk

To take each of your requirements in turn wrt ShutIt:

    - No masters. 
ShutIt builds containers for shipping, so there is no concept of a master.

    - Code should be as simple as possible.
What could be simpler than "pure bash", wrapped in a transparent and simple python framework? eg here's the mysql module:

https://github.com/ianmiell/shutit/blob/master/library/mysql...

    - No optimizations that would make the code read in an illogical order.
ShutIt is "pure ordered". Each module has an ordering and code is strictly sequential. It even outputs the commands into a "black box" recorder on the container which can then be used to port to other CM tools if desired.

    - Code must be split into two parts: base and service-specific, where each would reside in separate repositories. 
https://github.com/ianmiell/shutit/tree/master/library

These are shared infra, while custom modules can be cut and kept private.

You can also build "meta-modules" which simply require other modules and do nothing else. These then form the base layer of our dev builds.

    - The code must work for multiple environments (development, staging, production).
ShutIt's highly configurable, so you can code whatever you want wrt different environments.

    - The code should read and run in sequential order.
ShutIt demands sequential ordering.

Any questions, please mail me: ian.miell@gmail.com