The Age of Kalabox 2 hath dawned. Our dev dungeon toil has come to sweet fruition and we have released the command line interface version. I’d like to highlight some of the new features of KB2 over its predecessor. More importantly, I’d like to call on developers and orgs to help us test the new release. Interested? Start using Kalabox 2 and post some issues on Git.
One: What does all this mean for me?
While this CLI release (and blog post) is, admittedly, geared more towards other developers than normal end users it represents a significant milestone towards our promised cross-platform GUI zencraft. Specifically, it means that we’ve got a first draft on the core APIs, interfaces and libraries that will power the GUI. We’ve got the Statue of Liberty, now she just needs the solid green toga.
The TL;DR for end users here is: we’re rolling out the GUI release at DrupalCon LA. For all the devs in the house, please continue:
Two: The Features
Kalabox 2 provides three interfaces.
The Engine Interace:
Kalabox defines an engine as “a mechanism to spin up containers.” Currently, Kalabox ships with a Docker-based implementation but you can write your own implementation -- say, for LXC containers -- and easily swap it out using the engine key in our customizable global config file.
The Provider Interface:
Similarly to engines, Kalabox has an interface that engines can use for various providers. Providers can be thought of as the installation magic needed to support a given engine. So, to run on the Docker engine on MacOSX and Windows, Kalabox uses the Boot2Docker provider.
Engine will usually select the correct provider based on the user’s environment. On desktop Mac/Windows/Linux, this will be Boot2Docker.
If you were, hypothetically, running a future version of Kalabox on a Fedroa Linode cluster, you might be able to do so with the “YUM” provider.
The Services Interface:
Services are any additional containers that are needed to support apps. This could be something like an nginx reverse proxy or dnsmasq, or both. You can swap out different services backends in the global config using the “services” key.
Currently Kalabox implements a set of services called "Kalabox" that are used to support our Docker-based apps. Specifically, we are using hipache as a reverse proxy, dnsmasq to handle requests to .kbox domains, skydock to troll the Docker events stream for starts and stops, and skydns to handle intra-Docker DNS resolution.
You may need your apps to have a big Varnish or Solr pool. Or, maybe you just run one app per Kalabox instance and you have no services!
Cross-Platform and SCREW NFS
We’ve tested the CLI on Windows 7 Professional, OSX 10.10+ and Ubuntu 12.04 and 14.04 and so far, so good! Wanna test it? Get it at Git.
Kalabox 2 uses a fun new technology called “syncthing,” a P2P client for “sharing” files. Syncthing is a lot faster than NFS, so your sites should now run noticeably faster than ever before. Of course, depending on the hardware of your machine, YMMV. :)
Profiles and Plugins
With Kalabox 2, you can easily craft the infrastructure for your projects in a flat JSON file. Run nginx or Apache, Maria or mySQL, use 512M for php-fpm, or set the MAX_EXECUTION_TIME of mod_php5 to THIS.
On the other side of things, plugins will allow you to add functionality into your apps. They work similarly to Drupal hooks, letting you tap into the execution flow to DO ALL THE THINGS. We are working on crafting some basic plugins that will enable you to:
- Connect to your favorite hosts to grab your site
- Run whatever Drush version and command you want on your site without actually changing your infrastructure
- Printing random and inspirational Picard Quotes every time you start a site
Now, don’t limit yourself. Do whatever you want :)
To learn about other features, please check out the rest of The Things.
Three: Get Your Org on Kalabox 2
If you are a lone developer or are working for an organization and want to discuss a Kalabox partnership arrangement, please contact us.