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:
CREATE USER
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:
fabric
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.
libcloud
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
Overmind is a GUI and wrapper around libcloud, but doesn't support the command execution part.
What am I missing here?