Skip to content

Instantly share code, notes, and snippets.

@infamousjoeg
Last active March 14, 2022 15:10
Show Gist options
  • Save infamousjoeg/3d782cdda602d141c7b926af85b8dc4f to your computer and use it in GitHub Desktop.
Save infamousjoeg/3d782cdda602d141c7b926af85b8dc4f to your computer and use it in GitHub Desktop.
Bash Helper Script for AWS Lab using Summon
#!/bin/bash
if [[ "$1" == "list" ]]; then
echo "Running Instances:"
echo "=================="
summon --provider ring.py -e aws -f ~/secrets.yml aws ec2 describe-instances | jq -r '.Reservations[].Instances[] | select( .State.Name == "running") | .Tags[] | select ( .Key == "Name" ) | .Value'
echo ""
echo "Stopped Instances:"
echo "=================="
summon --provider ring.py -e aws -f ~/secrets.yml aws ec2 describe-instances | jq -r '.Reservations[].Instances[] | select( .State.Name == "stopped") | .Tags[] | select ( .Key == "Name" ) | .Value'
exit 0
fi
if [[ "$1" == "fix" ]]; then
public_ipv4=$(curl -s ipinfo.io/ip || echo "Can't get public IPv4 address"; exit 1)
echo "Fixed security group rules:"
echo "======================================="
security_group_ids=$(summon --provider ring.py -e aws -f ~/secrets.yml aws ec2 describe-security-group-rules | jq -r '.SecurityGroupRules[] | select( .Description == "GlobalProtect") | "\(.SecurityGroupRuleId),\(.GroupId),\(.IpProtocol),\(.FromPort),\(.ToPort)"' > /dev/null)
for ids in $security_group_ids; do
rule_id=$(echo "$ids" | cut -d, -f1)
group_id=$(echo "$ids" | cut -d, -f2)
protocol=$(echo "$ids" | cut -d, -f3)
from_port=$(echo "$ids" | cut -d, -f4)
to_port=$(echo "$ids" | cut -d, -f5)
summon -p ring.py -e aws -f ~/secrets.yml aws ec2 modify-security-group-rules --group-id "$group_id" --security-group-rules SecurityGroupRuleId="$rule_id",SecurityGroupRule=\{IpProtocol="$protocol",FromPort="$from_port",ToPort="$to_port",CidrIpv4="$public_ipv4"/32\}
echo "$rule_id in $group_id"
done
echo "Finished."
exit 0
fi
instance_id=$(summon --provider ring.py -e aws-instances -f ~/secrets.yml printenv "$2")
summon --provider ring.py -e aws -f ~/secrets.yml aws ec2 "$1"-instances --instance-id "$instance_id"
aws:
AWS_ACCESS_KEY_ID: !var aws/access_key_id
AWS_SECRET_ACCESS_KEY: !var aws/secret_access_key
aws-instances:
aap: i-0d6ce4c85c1ad69a0
aap2: i-0bbd99bee631fd26f
components: i-00ff23e87d17b0b91
dc: i-03cd63ce38a223e3e
vault: i-07f0768b169fb44ff
streisand: i-0d15c8f860656a0cd
conjur: i-0baecb6c9faa4fa56
kops-controller: i-0ea4de964f0cb722c
kops-worker: i-0fbfe4f48eb45a33e
jenkins: i-013819134a6e7c536
mc: i-094c9ecbe2f623a1e
psm: i-04eb1e65f95e5a0db
poc: i-0a80270aee237af6c
ghost: i-0e20a3b5767102741
tomcat: i-06f362daea3a1f56a
algo: i-009a7c864b039debe
kops:
S3_ACCESS_KEY_ID: !var aws/access_key_id
S3_SECRET_ACCESS_KEY: !var aws/secret_access_key
AWS_ACCESS_KEY_ID: !var aws/access_key_id
AWS_SECRET_ACCESS_KEY: !var aws/secret_access_key
@infamousjoeg
Copy link
Author

@infamousjoeg
Copy link
Author

To use aliases, add the below to your ~/.zshrc or ~/.bashrc file in your User's home directory.

alias aws-list='~/aws-instances.sh list'
alias aws-start='~/aws-instances.sh start '
alias aws-stop='~/aws-instances.sh stop '

$ aws-list
$ aws-start poc
$ aws-stop poc

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment