ec2インスタンスすぐ死ぬ
aws上でしばしばauto scalingするアプリケーションを開発していると、先ほどまでsshしていたインスタンスがいつの間にか死んでいたりします。
設定をちょくちょく変えながら試行錯誤している場合などは開発環境ですらそうで、ロードバランサーの口のほうでは22番を開けていないので、いちいち手と脳でリバースプロキシするのが結構面倒でした。
そこで、その環境内のどのインスタンスでもいいから繋ぎたいというときのため、タグで探して一番上にでてくるインスタンスにsshするシェルを書きました。
動作環境
yosemite
ansible 1.9.4
ansible ec2
中身
TAG_NAME=$1
HOSTNAME=$(ec2.py --list | grep -A 1 \"tag_Name_$TAG_NAME\" | grep ec2)
IP_PART=$(echo $HOSTNAME | sed 's/^.*_\([0-9]\{1,3\}_[0-9]\{1,3\}_[0-9]\{1,3\}_[0-9]\{1,3\}\).*$/\1/' | sed 's/_/-/g')
ssh ec2-user@ec2-$IP_PART.ap-northeast-1.compute.amazonaws.com ${@:2}
リージョンは割り切りました。
使い方
bash_profileなど普段使うものの設定ファイルに下記を追加
function essh() { ~/path/to/this/script.sh "$@" ;}
PATH="$PATH:~/path/to/ansible/inventory"
そして
essh tag_fuga_piyo {-i 必要なら}