Lately we’ve been working on a large refactor of a client project, breaking apart a monolithic application into microservices leveraging Docker. As we started automating the deploys, we often found it easier to bring a new instance online rather than updating in place and rolling back ala Blue Green Deployments. Hopefully I’ll find the time to blog more about our microservices setup as that’s not what this post is about.
Our main workflow at the time was to create an ssh config file and lazily pass it about then send diffs when a new server came online. Well this quickly got frustrating. What we really needed was something else orchestrating our containers, but we weren’t ready to tackle that yet.
Being the lazy dev’s that we are, we quickly said let’s make a tool. A short lunch chat defined the scope:
- Search for instances in ec2
- Select instance from search results.
- Shell into the server by the selection.
Somewhere on the drive back to the office I had decided to quickly build it… just needed to tie in the AWS sdk and some shell kungfu right? so what language? We are primarily working in Nodejs these days and quite familiar with building cli’s with it but really wanted something that we could download and just work, so that ruled out Nodejs and Ruby. Go? YES!
Actually I had been looking for a good excuse to write some Go and thought this would be a perfect fit. Back at the desk I put the initial version together in about an hour and walked over to a coworker’s desk with a thumbdrive and said “hey test this out…”. I’m on a Mac he’s on Ubuntu, oops (sad trombone played) I went back and cross compiled and you guesse it… trumpets of glory.
Apparently aws-ssh will also run on Windows. Another coworker has been using it as an easy way of shelling into instances from his host (Win 7). The connect option was added so he could easily shell into a virtual box VM as well as AWS instances.
Search Results for “sand”