jungleAWS operations by cli should be simpler
jungle
Description
jungle makes AWS operations from terminal simpler and more intuitive.
Why created
awscli is by far the most comprehensive CLI tool manipulating various AWS services, and I really like its flexible options and up-to-date release cycle. However, day-to-day AWS operations from my terminal don't need that much flexibility and that many services. Rather, I wanted just small set of UNIX-like commands which are easy to use and remember.
Installation
pip install jungle
Usage
EC2
I would highly recommend to use ssh-agent
to manage your ssh keys and pass phrases. If you ssh-add
your keys, ssh-agent
automatically select appropriate key when you try to login to a box. This makes it much easier to use jungle ec2 ssh
, or ssh
command in general, since you don't have to specify --key-file /path/to/key.pem
for each EC2 instance.
Listing all EC2 instances (each attribute is separated by a tab)
jungle ec2 ls
Listing all EC2 instances in formatted output(each attribute is separated with space and is aligned)
jungle ec2 ls -l
Filtering EC2 instances by Name tag
jungle ec2 ls blog-web-server-01
Filtering EC2 instances by Name tag using wildcard
jungle ec2 ls '*web*'
Starting instance
jungle ec2 up -i i-xxxxxx
Stopping instance
jungle ec2 down -i i-xxxxxx
SSH login to instance specified by instance id
jungle ec2 ssh -i i-xxxxxx --key-file /path/to/key.pem --port 1234
SSH login to instance specified by Tag Name
jungle ec2 ssh -n blog-web-server-01 --key-file /path/to/key.pem
SSH login to instance specified by Tag Name with wildcard (you'll be prompted to choose which server to log in)
jungle ec2 ssh -n 'blog-web-server-*' --key-file /path/to/key.pem
SSH login to instance specified by Tag Name through gateway instance
jungle ec2 ssh -n blog-web-server-01 --key-file /path/to/key.pem -g i-xxxxxx
SSH login to instance specified by Tag Name using auto ssh key discovery
jungle ec2 ssh -n blog-web-server-01
SSH login to instance gateway instance, specifying username for each instance, while disabling known_hosts prompt.
jungle ec2 ssh -i i-xxxxxx -u ec2-user -k /path/to/key.pem -s "-o UserKnownHostsFile=/dev/null" -g i-xxxxxx -x core
--dry-run
gives you ssh command and exits.
jungle ec2 ssh -n blog-web-server-01 -u ec2-user --dry-run
ssh xxx.xxx.xxx.xxx@ec2-user
-P/--profile-name
specify AWS profile name.
jungle ec2 -P myprofile ssh -n blog-web-server-01 -u ec2-user
ELB
Listing all ELB instances
jungle elb ls
Listing a ELB instance
jungle elb ls production-blog-elb
Listing ELB attached EC2 instances
jungle elb ls -l production-blog-elb
EMR
jungle emr ls
jungle emr ssh -k /path/to/key.pem -i j-xxxxxxx
jungle emr rm -i j-xxxxxxx
AutoScaling
jungle asg ls
RDS
jungle rds ls
Autocompletion (currently only supports bash)
Execuging the following command prints bash autocompletion script. Copy and past or redirect to your favorite file (e.g. /etc/bash_completion.d/jungle
, ~/.bashrc
). This is a function of click, which internally used by jungle
.
$ _JUNGLE_COMPLETE=source jungle
Configuration
You can create the credential file yourself. By default, its location is at ~/.aws/credentials
[default]
aws_access_key_id = YOUR_ACCESS_KEY
aws_secret_access_key = YOUR_SECRET_KEY
You may also want to set a default region. This can be done in the configuration file. By default, its location is at ~/.aws/config
[default]
region = us-east-1
More detailed configurations can be found in the boto3 documentation.