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?

  • Seems to me to be a great question for ServerFault. In fact I recently came across a tool saltstack.org 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. Jul 10, 2012 at 20:28
  • @MichaelDillon - because it's effectively a shopping question, which are off-topic on the SE networks. Jul 10, 2012 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. Jul 10, 2012 at 20:43

2 Answers 2


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

  • +1 for Puppet/Chef. Precisely what they're designed for.
    – ceejayoz
    May 15, 2012 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, 2012 at 15:01
  • 1
    @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, 2012 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. May 15, 2012 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

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