Tiny multi-server automation tool.
Run command on multiple servers. Designed to be as simple as possible and play nice with Unix tools.
pip install kitten
kitten
can get IP addresses from AWS resources for you. For that you'll need to have your AWS credentials set up.
You can do that using awscli
:
pip install awscli
Then:
aws configure
Use kitten run
:
$ kitten run uptime ubuntu 18.105.107.20 34.229.135.48 18.105.107.20 run uptime 34.229.135.48 run uptime 18.105.107.20 17:11:48 up 2 days, 6:02, 0 users, load average: 0.91, 2.99, 3.49 34.229.135.48 17:11:48 up 5 days, 11:19, 0 users, load average: 6.34, 5.94, 5.72
- Replace
ubuntu
with the user used to log in on the servers - Use
-i
to specify a private key - Use
--threads
to specify the number of concurrent connections (defaults to 10)
Use kitten ip
with either id
, asg
, elb
or opsworks
:
$ kitten ip asg my-tiny-asg 18.135.117.17 24.129.235.48
- By default only private IP addresses are returned. Use
--public
if you prefer public IPs - You can change region using
--region
If you're in a hurry, you can just paste any text that contains instance IDs:
$ kitten ip id prod-mongo-0901bc21990109ed4-eu my-hostname-06a2fc734534ef6d9 17.136.127.18 23.119.136.38
Use kitten get
:
kitten ip opsworks a283c671-d4c1-4dfa-a7c2-823b7f7b2c2c | xargs kitten get /tmp/system.log ubuntu
Use kitten put
:
kitten ip asg big-prod-asg | xargs kitten put -i ~/.ssh/key.pem cat.jpg /tmp ubuntu