Server Fault is a question and answer site for system and network administrators. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I'm creating a SaaS platform, and I need a component / library that can create, delete and store the connection details for cloud servers. It also needs to support executing shell commands on these servers and returning the response to the caller. I want a central database of servers and their configuration, plus the ability to reach out and manage the servers via SSH execution of bash scripts. I don't want something that needs agents on every server like Chef.

For example, this command is received by the hypothetical application:

server = server12345
name = myuser

It's translated into the following set of actions and executed by the app, which knows how to connect to server12345, and how to create a user on that server:

$ ssh root@server12345
$ adduser myuser

And returns the output from the shell:

Added user myuser.

I've done research on Google and can't quite quite find something that does this already. I've found:


This part handles the executing of the shell commands very elegantly, and can take multiple server definitions, but it's supposed to be a deployment tool so doesn't do everything that would be required above - for example, it doesn't have a daemon mode where it listens for commands - it expects to be executed on the shell. It also can't provide the central database functionality.


This library can handle the server admin (CRUD) part, but doesn't have a command interface daemon either, and doesn't let you execute commands on the servers.

I guess I need something that is a combination of libcloud, fabric and django for an API. Or something else that does that same thing regardless of language.


Overmind is a GUI and wrapper around libcloud, but doesn't support the command execution part.

What am I missing here?

share|improve this question

closed as off topic by RobM, coredump, Khaled, Bart De Vos, MadHatter May 16 '12 at 12:24

Questions on Server Fault are expected to relate to server, networking, or related infrastructure administration within the scope defined by the community. Consider editing the question or leaving comments for improvement if you believe the question can be reworded to fit within the scope. Read more about reopening questions here.If this question can be reworded to fit the rules in the help center, please edit the question.

Seems to me to be a great question for ServerFault. In fact I recently came across a tool which seems to address exactly your use case. It runs commands remotely on a set of servers and has prebuilt command modules for a lot of common stuff. – Michael Dillon Jul 10 '12 at 20:28
@MichaelDillon - because it's effectively a shopping question, which are off-topic on the SE networks. – Mark Henderson Jul 10 '12 at 20:35
It is only marginally a shopping question and could have easily been edited to focus more on the technical issue related to server management. He did a lot of research already and if he had said, "This is what I tried to solve my problem but I'm stuck" it would not have been closed. It would have been better to add some comments asking him what he means by "CRUD the servers" and why he lumps Jenkins in with the other tools. – Michael Dillon Jul 10 '12 at 20:43

Im sure you will get marked down for shopping, but I'm very surprised your googling didnt identify Puppet, or Chef

share|improve this answer
+1 for Puppet/Chef. Precisely what they're designed for. – ceejayoz May 15 '12 at 15:00
Yes you are talking about configuration management. Take a look at Canonical's Juju too, but it is more related to managing full instances. – coredump May 15 '12 at 15:01
@ceejayoz I misread your comment as "PuppetChef" and had a sudden image in my head of this guy with a root login to my servers. – Ladadadada May 15 '12 at 15:14
Chef/puppet are used to manage configuration. I don't believe they provide a method of proxying arbitrary commands from a client to the targeted server. – Mark Theunissen May 15 '12 at 15:20

Your requirements, especially the remote execution, sound closer to a PaaS stack than any one library.

There are some options described here

share|improve this answer

Not the answer you're looking for? Browse other questions tagged or ask your own question.