Control your cluster with csshx
For the past few months, I've been working a lot with clustered VMs (wink wink ;)). Over and over again, I would run into this scenario:
- For each node in the cluster:
- SSH into node 1
- Fire vim and update a file
- Restart services and test changes
This cycle gets old pretty quickly. I was chatting about this problem over lunch, when one of my coworkers introduced me to the most excellent CSSHX
CSSHX is a perl-based cluster SSH tool for Mac OSX. It's very straightforward to use, you just call, passing the user@IP:PORT of each server in your cluster:
csshx admin@server1 admin@server2 admin@server3
With that command, CSSHX will open 3 terminals (one per server), and a master terminal. Anything you type in the master terminal will be automatically typed on all the other terminals. Simple, and effective.
If you have a series of clusters you interact with a lot, CSSHX also supports using a configuration file (it defaults to /etc/cluster). Every line of the file has to follow this format 'name user@IP:PORT user@IP:PORT user@IP:PORT...'. You can have as many lines as you want.
If your /etc/cluster looks like this:
dev admin@server1 admin@server2 admin@server3
dogfood admin@server10 admin@server20 admin@server30
You could control the dogfood cluster like this:
csshx dogfood
One drawback I've found is that, when connecting to new servers, the 'clustered terminals' fail to connect when SSH prompts to accept a new server ssh key. As a workaround, I connect to each server directly once, accept the host key, and then use CSSHX for any future connections.
Hope it helps!
About the author
I’m the founder and CEO of Okteto, where we’re busy re-imagining the developer experience for cloud native applications.
Before Okteto, I built enterprise chat products at Atlassian, application lifecycle management tools at Elasticbox (now part of Centurylink) and cloud services at Microsoft Azure.
Comments
Join the discussionNo comments yet. Be the first to comment.




