[aws-cli] EC2スケールアップした時にELB配下だったら、一度外して再度参加させるやつ

スケールアップするためにインスタンス停止したら、ELBに再度参加させないと、いつまでも Out of Service のことってあるよね…

#!/bin/sh
INSTANCE_ID="${1}"
INSTANCE_TYPE="${2}"
# 指定されたインスタンスタイプが現在のものと同じだったら何もしない
CURRENT_INSTANCE_TYPE=`aws ec2 describe-instances –instance-ids ${INSTANCE_ID} | jq -r '.Reservations[].Instances[].InstanceType'`
if [ "${CURRENT_INSTANCE_TYPE}" = "${INSTANCE_TYPE}" ]; then
echo "current instance type : ${CURRENT_INSTANCE_TYPE}"
exit 0
fi
# ELB 配下かどうか確認
ELB_NAME=''
ELBS=`aws elb describe-load-balancers | jq -r ".LoadBalancerDescriptions[].LoadBalancerName"`
for ELB in ${ELBS}; do
ELB_INSTANCE_IDS=`aws elb describe-instance-health –load-balancer-name ${ELB} | jq -r ".InstanceStates[].InstanceId"`
for ELB_INSTANCE_ID in ${ELB_INSTANCE_IDS}; do
if [ "${ELB_INSTANCE_ID}" = "${INSTANCE_ID}" ]; then
ELB_NAME="${ELB}"
break
fi
done
ELB_INSTANCE_IDS=''
if [ "${ELB_NAME}" != "" ]; then
break;
fi
done
# ELB 配下だったら取り外す
if [ "${ELB_NAME}" != "" ]; then
echo " Remove ELB: ${INSTANCE_ID} from ${ELB_NAME}"
aws elb deregister-instances-from-load-balancer –load-balancer-name=${ELB_NAME} –instances=${INSTANCE_ID}
fi
# インスタンス停止して、stopped になるまで待つ
while :
do
EC2_STATE=`aws ec2 describe-instances –instance-ids ${INSTANCE_ID} | jq -r '.Reservations[].Instances[].State | .Name'`
echo "${INSTANCE_ID} : ${EC2_STATE}"
if [ "${EC2_STATE}" = "running" ]; then
aws ec2 stop-instances –instance-ids ${INSTANCE_ID}
fi
if [ "${EC2_STATE}" = "stopped" ]; then
break
fi
sleep 10
done
# インスタンスタイプを変更する
aws ec2 modify-instance-attribute –instance-id ${INSTANCE_ID} –instance-type ${INSTANCE_TYPE}
# インスタンス開始して、running になるまで待つ
aws ec2 start-instances –instance-ids ${INSTANCE_ID}
while :
do
EC2_STATE=`aws ec2 describe-instances –instance-ids ${INSTANCE_ID} | jq -r '.Reservations[].Instances[].State | .Name'`
echo "${INSTANCE_ID} : ${EC2_STATE}"
if [ "${EC2_STATE}" = "running" ]; then
break
fi
sleep 10
done
# ELB に参加させる
if [ "${ELB_NAME}" != "" ]; then
echo " Add ELB: ${INSTANCE_ID} to ${ELB_NAME}"
aws elb register-instances-with-load-balancer –load-balancer-name=${ELB_NAME} –instances=${INSTANCE_ID}
fi

view raw
gistfile1.sh
hosted with ❤ by GitHub

参考URL: http://dev.classmethod.jp/cloud/aws/elb-re-register/

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Google フォト

Google アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中