LoginSignup
20
22

More than 5 years have passed since last update.

AWS EC2インスタンス起動時にtag nameをホスト名にして末尾に番号をつける

Posted at

オートスケールにしたときに全く同じタグホスト名で起動するのが気に入らないので起動時にタグ名を変更するスクリプトを仕込んでみました。
番号を重複させたくないのでIPアドレスの第3、4ブロックの数字を末尾に付加しています。

web-012111みたいなホスト名がAWSコンソールのインスタンス一覧に表示されるようになります。

Amazon Linuxの場合はec2コマンドラインツールがはじめからインストールされているので以下の環境変数を設定してコマンドラインツールを利用できるようにしておきます。
環境変数はローカルマシン全体に登録するとよろしくない(アカウントがあれば誰でも同じキーとシークレットを利用することになる)のでrootの.bashrcに記述しました。

export JAVA_HOME=/usr/lib/jvm/jre
export AWS_ACCESS_KEY="Your key"
export AWS_SECRET_KEY="your secret"
export EC2_HOME=/opt/aws/apitools/ec2
export EC2_URL=https://ec2.ap-northeast-1.amazonaws.com

JAVA_HOMEはデフォルトのインストール状況なら/usr/lib/jvm/jre-1.6.0に設定するとそのまま動きます。私の環境はJDK 1.7.0を入れて切り替えできるように上記パスからリンクを貼っているのでこうしています。自分の環境に合わせて置き換えてください。

JDK1.7を入れた手順についてはこちら
http://qiita.com/mychaelstyle/items/2a5b26e80cd5b0559625

動作するか確認します。

confirm
ec2-describe-instances

インスタンス一覧が表示されたらOKです。

/root/bin/renamehostスクリプトを作ります。

/root/bin/renamehost
#!/bin/sh
#
# rename tag with ip for web servers 
#
# [required env]
# write to root .bashrc 
#
# export JAVA_HOME=/usr/lib/jvm/jre
# export EC2_HOME=/opt/aws/apitools/ec2
# export AWS_ACCESS_KEY=key
# export AWS_SECRET_KEY=secret
# export EC2_URL=https://ec2.ap-northeast-1.amazonaws.com
#

# definitions
PREFIX="web-"

# Source global definitions
if [ -f /root/.bashrc ]; then 
  source /root/.bashrc
fi

# watch info of this instance
INSTANCE_ID=`curl -s http://169.254.169.254/latest/meta-data/instance-id`
LOCAL_IP=`curl -s http://169.254.169.254/latest/meta-data/local-ipv4`
HOSTNUM=`echo $LOCAL_IP | sed -e "s/10\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.//"`
HOSTNUM=`printf "%03d" ${HOSTNUM}`
HOSTRG=`echo $LOCAL_IP | sed -e "s/10\.[0-9]\{1,3\}\.//"`
HOSTRG=`echo $HOSTRG| sed -e "s/\.[0-9]\{1,3\}\$//"`
HOSTRG=`printf "%03d" ${HOSTRG}`
NAME="${PREFIX}${HOSTRG}${HOSTNUM}"
echo $INSTANCE_ID
echo $LOCAL_IP
echo $HOSTNUM
echo $HOSTRG 
echo $NAME

hostname $NAME
ec2-create-tags ${INSTANCE_ID} --tag Name=${NAME}

exit

実行権限付与して動作確認

command
chmod u+x /root/bin/renamehost
/root/bin/renamehost

ログインし直してホスト名がかわっていれば成功です。
/etc/rc.localファイルの末尾にこのスクリプト実行を追加します。

command
echo "/root/bin/renamehost" >> /etc/rc.local

インスタンスを起動し直して変更されているか確認してください。

20
22
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
20
22