EIP(ENI)/EBSのアタッチをEC2の中から行う 2
Categories: TECHNOLOGY
昨日の作業アタッチ/デタッチするのはどちらかというとEIPではなくENIの方だったみたいなので、
こちらもメモしておく。
参考: http://exploreaws.doorblog.jp/archives/26049308.html
ENIのアタッチ
例のごとく環境変数の設定
export ENI0=eni-XXXXXXXXX export ENI1=eni-YYYYYYYYY
デフォルトでDelete On Termination:Trueになっているくさいので
どうにかする。
$ ec2-attach-network-interface $ENI1 -i $INSTANCE_ID -d 1 eni-attach-00000000
コンソールからみると確かにインスタンスにくっついていてしかも
Delete On Termination: false
になっていた。二個目のインターフェイスは勝手にfalseになるのだな。
eth0に当たるようなENIがEC2と共死にしそうだったので裏切るように設定した。
$ ec2-modify-network-interface-attribute $ENI0 --delete-on-termination false -a eni-attach-1111111 NETWORKINTERFACE eni-XXXXXXXXX attachment
コンソールで不揮発になっているのを確認。
準備完了なのでcloud-initにしてみる
事前の説明として、
・AutoScalingで死んだら勝手に起き上がってくる感じにする。起き上がったらとりあえずなんかすぐ使える。
・固定IPが2つ必要(ENIが2つある)。
・可変のデータはインスタンスに付いているものとは別にEBSに全て書いてある(/data =>/dev/sdf(xvdf))
・可変しないデータはAMI化してAutoScalingの時にそれを使って起動するようにする。
・余ったEBSの処理は後々考える。
・(user-dataに登録できるcloud-initスクリプトのサイズ制限は16kbらしいです)
なので
1.cloud-initのスクリプトをコマンドの羅列で書く
2.いらないデータを削除してAMIを作る。
3.実際にインスタンスを葬ってみる。
でしょうか。
なんかこんなかんじかな。
#cloud-config repo_upgrade: all runcmd: - [export, AWS_CREDENTIAL_FILE=/opt/aws/credential-file-path] - [export, AWS_ACCESS_KEY=YYYYYYYYYYYYYY] - [export, AWS_SECRET_KEY=XXXXXXXXXXXXXX] - [export, EC2_URL=https://ec2.ap-northeast-1.amazonaws.com] - [export, INSTANCE_ID=`curl -s[http://169.254.169.254/latest/meta-data/instance-id`]](http://169.254.169.254/latest/meta-data/instance-id%60%5D) - [export, EIP=000.000.000.000] - [export, DEVICE=/dev/sdf] - [export, ENI0=eni-00000000] - [export, ENI1=eni-11111111] - [ec2-attach-volume, $EBS_DATA, -i, $INSTANCE_ID, -d, $DEVICE] - [mount, /dev/xvdf, /data] - [ec2-attach-network-interface, $ENI0, -i, $INSTANCE_ID, -d, 0] - [ec2-attach-network-interface, $ENI1, -i, $INSTANCE_ID, -d, 1]
でAMIを作成する。めんそうなのでEBS AMIで簡単に作ってしまっている。
EC2でくっついているやつだけで作ります。
Auto Scalingの設定
#新しいLaunchConfigの追加 as-create-launch-config MyLCv5 --image-id ami-XXXXXXXX --instance-type OK-Created launch config #auto scaling groupの更新 as-update-auto-scaling-group MyGroup -launch-configuration MyLCv5 --availability-zones ap-northeast-1a --min-size 1 --max-size 1 OK-Updated AutoScalingGroupTweet