diff --git a/Formula/prx-dev-tools.rb b/Formula/prx-dev-tools.rb index 38c7e5c..2be182c 100644 --- a/Formula/prx-dev-tools.rb +++ b/Formula/prx-dev-tools.rb @@ -7,7 +7,7 @@ class PrxDevTools < Formula def install bin.install "bin/awsesh.rb" => "awsesh" - bin.install "bin/awssh" + bin.install "bin/awsesh.rb" => "awssh" bin.install "bin/awsso.rb" => "awsso" bin.install "bin/awstunnel" bin.install "bin/prx-cfn-tree.rb" => "prx-cfn-tree" diff --git a/bin/awssh b/bin/awssh deleted file mode 100644 index 2914805..0000000 --- a/bin/awssh +++ /dev/null @@ -1,120 +0,0 @@ -#!/bin/bash -PRX_DEFAULT_REGION=us-east-1 -SSH_USER=ec2-user -SSH_OPTS="-o StrictHostKeyChecking=accept-new -C" -[[ ! -z $PRX_SSH_KEY ]] && SSH_OPTS="$SSH_OPTS -i $PRX_SSH_KEY" -[[ ! -z $PRX_AWS_PROFILE ]] && export AWS_PROFILE="$PRX_AWS_PROFILE" - -function usage() { - echo "Usage:" - echo " awssh [--region ]" - echo " awssh [--region ]" - echo " awssh [] [--region ]" - echo "" - echo "Examples:" - echo " awssh i-1234567890" - echo " awssh stag cms --region us-west-2" - echo " awssh stag cms console" - echo " awssh stag cms host" - echo "" - echo "Notes:" - echo " must be a valid ./bin/application - defaults to /bin/ash" - echo " using command = \"host\", you'll get a shell in the host ec2 server" - exit 1 -} - -# find a running task to ssh into -function ssh_to_task() { - CLUSTER="$1" - MATCH_NAME="$2" - RUN_CMD="$3" - - # match a service name - JQ_SELECT="map(select(ascii_downcase | contains(\"$MATCH_NAME\")))" - JQ_SORT="sort_by(ascii_downcase | contains(\"worker\"))" - SERVICE=`aws ecs list-services --cluster $CLUSTER | jq -r ".serviceArns | $JQ_SELECT | $JQ_SORT | last"` - if [[ "$SERVICE" == "null" ]]; then - echo "Unable to find service match: $MATCH_NAME" - exit 1 - fi - - # find instance id with this service name running on it - ARN=`aws ecs list-tasks --cluster $CLUSTER --service-name $SERVICE --desired-status RUNNING | jq -r ".taskArns[0]"` - if [[ "$ARN" == "" || "$ARN" == "null" ]]; then - echo "No running tasks for service $SERVICE" - exit 1 - fi - CONTAINER=`aws ecs describe-tasks --cluster $CLUSTER --tasks $ARN | jq -r ".tasks[0].containerInstanceArn"` - ID=`aws ecs describe-container-instances --cluster $CLUSTER --container-instances $CONTAINER | jq -r ".containerInstances[0].ec2InstanceId"` - - ssh_to_ec2 $ID $MATCH_NAME $RUN_CMD -} - -# ssh to an ec2 instance -function ssh_to_ec2() { - ID="$1" - MATCH_NAME="$2" - RUN_CMD="$3" - - # TODO: ssh through jump server to private IP instead - IP=`aws ec2 describe-instances --instance-ids $ID | jq -r ".Reservations[0].Instances[0].PublicIpAddress"` - if [[ "$IP" == "" ]]; then - echo "instance $ID not found" - exit 1 - fi - - if [[ -z "$MATCH_NAME" || "$RUN_CMD" == "host" ]]; then - ssh -o "StrictHostKeyChecking=no" -o "UserKnownHostsFile /dev/null" $SSH_USER@${IP} - else - REAL_CMD="/bin/ash" - if [[ "$MATCH_NAME" == "sphinx" || "$MATCH_NAME" == "networks" || "$MATCH_NAME" == "exchange" ]]; then - REAL_CMD="bin/bash" - fi - if [[ -n "$RUN_CMD" ]]; then - REAL_CMD="./bin/application $RUN_CMD" - fi - echo "Connecting: $ID $MATCH_NAME $REAL_CMD" - cols=250 # TODO: $(tput cols) isn't right - rows=$(tput lines) - - CMD="docker exec -it \$(docker ps --filter name=$MATCH_NAME --quiet --latest) /bin/sh -c \"stty cols $cols rows $rows && $REAL_CMD\"" - ssh -t -o "StrictHostKeyChecking=no" -o "UserKnownHostsFile /dev/null" $SSH_USER@${IP} "$CMD" - fi -} - -# args -ENV="$1" -if [[ $2 == "--region" ]]; then - export AWS_REGION=$3 -elif [[ $3 == "--region" ]]; then - export AWS_REGION=$4 -elif [[ $4 == "--region" ]]; then - export AWS_REGION=$5 -else - export AWS_REGION=$PRX_DEFAULT_REGION -fi -export AWS_DEFAULT_OUTPUT="json" - -# run! -if [[ $1 == i-* ]]; then - ssh_to_ec2 $1 -elif [[ "$1" == "prod" || "$1" == "stag" ]]; then - JUMP_SUFFIX="$AWS_REGION.prx.tech" - [[ "$1" == "prod" ]] && JUMP_HOST="jump.$JUMP_SUFFIX" || JUMP_HOST="jump.staging.$JUMP_SUFFIX" - NAME=`ssh $SSH_USER@$JUMP_HOST $SSH_OPTS 'echo $PRX_ECS_CLUSTER_NAME'` - if [[ $? != 0 ]]; then - echo "Error: $NAME" - # TODO: removing stale known_hosts (ssh-keygen -R jump.prx.tech) - exit 1 - else - ssh_to_task $NAME $2 $3 - fi - -elif [[ "$1" == "stag" ]]; then - NAME=$(ecs_cluster_name $1 $AWS_DEFAULT_REGION) - echo $NAME - # exit - ssh_to_task $NAME $2 $3 -else - usage -fi