So I'm looking around for tools that help to automate process management – starting, restarting, stopping, on localhost and remotely, etcetera. I'm pretty green at the world of system admin so I'm looking for any pointers. I've been reading the Wikipedia entries on DevOps, config management tools, and so on, but I'm wondering what tools people are using in their daily work, or what I should be Googling to find what's out there.
To be more specific, I want to write a config file that looks something like:
Then the tool starts up all these processes; if one of them goes down, it can send an alert, and/or go in and restart it. It has a CLI and/or web interface to monitor stuff, and so on.
From what I've been reading there's a wide spread of options here, from basic CL tools to full-fledged solutions with a lot of moving parts…I guess I'm looking for something in the middle. Bonus points if it runs on the JVM.
I think foreman is really nice because of log combination, and the tidy way it lets you configure processes like fixtures in your app. I much prefer running database only while app is running, rather than keeping postgres running, or starting/stopped it arbitrarily on my local machine.
Easily installable on any distro that has Python, manageable via sockets and/or a command, runs wonderfully on non-privved users if you roll that way. Auto-restarts processes that crash, makes it super easy to reload your stuff after code updates, etc etc.
I've heard good things about runit as well. I've been hesitant to use upstart or launchctl, since those are very distro/platform-specific (and because screw upstart).
Hey, that looks great Kelvin. godrb looks like a good fit as well. Quix, I'm looking for a more managed solution because I might want this to be a recommendation for general end users as well. Thanks for all the suggestions so far.