10 comments

[ 3.6 ms ] story [ 34.5 ms ] thread
So the actual process management stuff is built on top of runit?

Is this a Linuxey only sort of thing or are FreeBSD/OpenBSD/OpenSolaris/OpenIndiana invited to the party?

Runit runs just fine on top of FreeBSD and OSX (and Should work on OpenSolaris / OpenIndinana, though i don't have personal experience).

Nothing in cast itself is really linux specific, it should all work on any Unixy-enough OS, and we have plans for how to do it on top of Windows too.

I don't suppose you have any hints for getting runit installed/running on FreeBSD? There's a runit port, but it doesn't auto-start that I've been able to figure out and I never have found any real documentation on it.

Back to Cast though, the "create instance redis0" example is basically just creating a runit script?

Understood that "just" covers a lot, including the auth, agent, etc. But the thing it's actually doing on the server (after building/installing the requested package) is adding a runit script right?

You're pretty much correct, but the building/installing step is responsible for a lot more Cast code than the runit part is.

When you run "create instance redis0" the high level steps are:

    1. Create a new directory structure in which to install redis.
    2. Copy all the redis files into a version-specific location in that structure.
    3. Process any templates (for config files, etc) that were provided.
    4. Create symlinks from the version-specific install location into a version-independent data root.
    5. Create various symlinks for tracking the 'current' version, etc.
    6. Create the runit script.
I might be forgetting a step somewhere in there, but you get the idea.

edit: fix list formatting

Service management part is also abstracted away pretty well, so it should be fairly easy to write a new backend for your favorite service manager (supervisor, upstart, etc.).
Don't get me wrong. I love runit. Simple and effective. Runs on all my deployments, which is a lot nicer than rc scripts for FreeBSD (which isn't really comparable anyway), Upstart for Ubuntu, this for this and that for that.

Consistency is nice.

Just never figured out how to get it to start on boot in FreeBSD (it's not just runsvdir_enable="YES").

It seems like a nice project. I like that you don't need to know a particular programming language to use it.

The way you define services feels a bit awkward though.

Also, it seems like install.sh scripts for various platforms would lower the barrier to entry. The installation documentation is nice enough, but really that should all just be scripted so it can be condensed to:

curl http://cast-project.org/install.sh | sh

Running runit scripts out of a user home-dir (as in the example) does feel wrong to me though.

We actually do have an install script. It is not the best one, but you should be good to go in a few simple steps:

1. downloading a tarball 2. unpacking it 3. running "scons install"

Scons (our built tool of choice) is an extra dependency, but this shouldn't be a problem since it's a prerequisite for Node.js itself (platform on which Cast is built).

I got bored and wrote one for Ubuntu: http://pastie.org/1837350

I didn't try it, but probably pretty close to working. It does more than some people might want, but I didn't write it for the pedants in the crowd. ;-)