I am looking for an open-source package to set up an HTTP API to create, modify and tear down other server types in a Linux server. I would like to be able to administrate:
- An SSH server (including SFTP)
- An FTP server (including FTPS)
- An Apache server
For example, I would like to be able to say:
- Create an Apache instance listening on 1.2.3.4:8080 with docroot
/var/www/mydocroot
- Create an SSH server listening on 1.2.3.5:8081
- List all of the FTP servers currently known about
- Tear down the FTP server listening on 1.2.3.6:8082
I have suggested an HTTP-based API since this seems to be the most sensible way to communicate with this system remotely. I would imagine it would also be RESTful. However, this is not a strong requirement - if there is another way to communicate in a standards-based fashion, then it might still fit.
In case it is helpful to guide answers, my use case is an suite of integration tests that test an application that does software deployments. Individual tests will need to create web servers and various file transport systems in order to check the operation of the application. Presently I just test in a Docker environment and turn the SSH/FTP servers on and off with shell commands (this means the current set of tests cannot be parallelised, since they all use a single instance of each service).
I envisage that this tool will administrate servers upon the same server it is installed upon, and that it would need to run as root. However, it could administrate another server instead.
If there is an HTTP API for something like cPanel or WebMin, that might work. I found this service, but it's not open source, and it's only for a hosted FTP service rather than a package one can self-install.
I was thinking about writing this service myself and open-sourcing it, but it makes sense to see if it exists first. My web searches are indicating "no" at present, but it pays to make sure.