I’ve been working somewhat feverishly for the last few weeks on Exosuit, my Rails + AWS deployment tool.
What Exosuit can do as of now
Install. You can install Exosuit by doing
brew tap jasonswett/exosuit && brew install exosuit. I think this is pretty nifty.
Launch. You can run the
exo launch command to launch a new EC2 instance. Exosuit will mark this instance in the Exosuit config file as the “primary” EC2 instance.
SSH. You can run
exo ssh to SSH into the primary instance.
Install stuff. You can run
exo prepare to install some stuff on the primary EC2 instance. This part is a work in progress and is not a part of the publicly-documented API yet. It might never be. This is just kind of an intermediate step to help make all my manual work less manual.
Register an app. My vision is that eventually you can run
git push exosuit master, then
exo open and see your fully-ready Rails app at a production EC2 URL. Right now, you can run
exo create and, if you have an account at app.exosuit.io, you can register the app with “the mothership”. Why do this? Because the vision is that when you register your app with the mothership, the mothership will create a repo at
git.exosuit.io, the CLI tool will do
git remote add origin http://git.exosuit.io/your-app-name.git, and then anytime you do
git push exosuit master, the Exosuit Git server can listen and automatically push to your production EC2 instance. I know that’s a lot of stuff. I plan to write something to explain it in more detail sometime. It’s all modeled after my understanding of how Heroku works.
My next steps
My current milestone target is the ability to run
exo create and have Exosuit create a repo at
git.exosuit.io. To do this in a fully secure manner is definitely non-trivial.
I currently have the Exosuit CLI working to where it can hit
https://app.exosuit.io/api/v1/apps (again, “the mothership”), including the user’s app name in the payload. This will create a record in the mothership database to keep track of the fact that this user has this app.
Next I need to make it so the mothership can say “Hey, Exosuit Git server, create a blank repo for such-and-such app, and let me know if it actually worked.” I have a pretty good idea of how I’m going to accomplish all this, it’s just going to be a lot of work.
I also came up with some thoughts as to what the free vs. paid tiers of Exosuit might look like.