This one is kind of a brain dump. The premise being, create a build script that can be run against a specific AWS EC2 instance.
This build script would include the following:
- Setting up an Apache Server
- Setting up PHP (with default packages/libraries)
- Setting up a MySQL Server (with a default password)
- Setting up an SVN Server (with a default user/password)
- Setting up an VSFTP Server (initially, with no user/password; access will be based on virtual hosts)
- Setting up a Memcached Server
- Installing APC
Some auxiliary actions include:
- Creating aliases to manage the server from the command line
- Formatting the prompt with colours, for command line access
- Setting up the timezone for the instance
Now, I already have a build script that does all this for me. The idea here is to automate this through a build script, and then present the developer with a UI/dashboard to manage it.
The Dashboard
The dashboard itself would be hosted on GitHub, and upon initial build, the server would check it out. It would be written in PHP, and would manage all the functionality of the server.
This management would include:
- Restarting servers (Apache/PHP/MySQL/SVN/VSFTP)
- Restarting the instance
- Creating MySQL users, deleting them, and managing their passwords
- Creating SVN users, deleting them, managing their passwords, and accessing their repository addresses
- Creating new virtual hosts for apache and managing them through a text-area
- Creating new VSFTP virtual users (related to new virtual hosts)
While the list of actions isn't extensive, I believe that they'd be very useful. They are things I do regularly through the command line, that shouldn't really need to be done through it.
A catch is that all the data needs to be accessed directly from configuration files. I wouldn't want to create a separate data source to manage the configuration itself.
The reasoning is this: I want to still be able to do things from the command line. I want to be able to create new virtual hosts, restart server(s), change settings, etc. I don't want the dashboard to conflict with this.
I think having it hosted on GitHub would make pretty solid sense too, as I could
roll out updates to various servers that I was running (let alone others) by
simply do a pull
on them. The dashboard would then get updated with more
options, across my servers, assuming I ever get to the point of having more than
one micro :)