EIP/EBSのアタッチをEC2の中から行う
Date:2013-10-16 21:49:04 +0900
Categories: TECHNOLOGY
Categories: TECHNOLOGY
導入はやはりこのページです。
http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/SettingUp_CommandLine.html
AWSのサイトからCLIをダウンロードしようと思ったら
AMZON LINUXには既に入っているとのこと。
まぁ要はEC2が死んだ時に勝手に生き返って、
生き返ったついでに勝手に可変領域のEBS(死んだ時切り離されたやつ)とかとってマウントして
生き返ったついでに勝手にEIPとかアタッチして何も無いかのように振る舞ってればいいじゃん。
です。
事前に準備
特に入れた記憶がなかったけれど確かになんか入ってた。
$ as-describe-auto-scaling-groups --headers as-describe-auto-scaling-groups: Malformed input-No Credentials were provided Usage: as-describe-auto-scaling-groups [AutoScalingGroupNames [AutoScalingGroupNames ...] ] [--max-records value ] [General Options] For more information and a full list of options, run "as-describe-auto-scaling-
どうやらここにいるらしい。
$ ls -l /opt/aws/apitools/ 合計 36 lrwxrwxrwx 1 root root 11 10月 2 05:46 2013 as -> as-1.0.61.3 drwxr-xr-x 4 root root 4096 10月 2 05:46 2013 as-1.0.61.3 lrwxrwxrwx 1 root root 23 10月 2 05:46 2013 cfn-init -> ./cfn-init-1.3-16.amzn1 drwxr-xr-x 5 root root 4096 5月 9 20:03 2013 cfn-init-1.3-13.amzn1 drwxr-xr-x 5 root root 4096 10月 2 05:46 2013 cfn-init-1.3-16.amzn1 lrwxrwxrwx 1 root root 12 10月 2 05:46 2013 ec2 -> ec2-1.6.10.1 drwxr-xr-x 4 root root 4096 10月 2 05:46 2013 ec2-1.6.10.1 lrwxrwxrwx 1 root root 12 5月 9 20:03 2013 elb -> elb-1.0.17.0 drwxr-xr-x 4 root root 4096 5月 9 20:03 2013 elb-1.0.17.0 lrwxrwxrwx 1 root root 9 5月 9 20:03 2013 iam -> iam-1.5.0 drwxr-xr-x 4 root root 4096 5月 9 20:03 2013 iam-1.5.0 lrwxrwxrwx 1 root root 12 5月 9 20:03 2013 mon -> mon-1.0.13.4 drwxr-xr-x 4 root root 4096 5月 9 20:03 2013 mon-1.0.13.4 lrwxrwxrwx 1 root root 12 9月 18 11:27 2013 rds -> rds-1.14.001 drwxr-xr-x 4 root root 4096 9月 18 11:27 2013 rds-1.14.001 lrwxrwxrwx 1 root root 14 5月 9 20:03 2013 ses -> ses-2012.07.09 drwxr-xr-x 3 root root 4096 5月 9 20:03 2013 ses-2012.07.09
もしかしてと思って環境変数を設定してあるんじゃないかと思って手順よりも先に確かめたら
やっぱり入っているんだね。
$ echo $EC2_HOME /opt/aws/apitools/ec2
さすがにこの2つは登録されてなかった。
なので登録。
$ echo $AWS_ACCESS_KEY $ echo $AWS_SECRET_KEY #環境変数に登録 $ export AWS_ACCESS_KEY=XXXXXXXXXXXXXXXXXXX $ export AWS_SECRET_KEY=XXXXXXXXXXXXXXXXXXX
アクセスキーID / シークレットアクセスキーの編集
環境変数の設定
sudo cp -ap /opt/aws/credential-file-path.template /opt/aws/credential-file-path #複製 sudo vi /opt/aws/credential-file-path #templateにあわせてアクセスキーID / シークレットアクセスキーを記載 sudo chmod 600 /opt/aws/credential-file-path #コマンドを叩くユーザの権限でsudo系なしで行けるようにchownとか $ export AWS_CREDENTIAL_FILE=/opt/aws/credential-file-path $ echo $AWS_CREDENTIAL_FILE /opt/aws/credential-file-path $ ec2-describe-regions REGION eu-west-1 ec2.eu-west-1.amazonaws.com REGION sa-east-1 ec2.sa-east-1.amazonaws.com REGION us-east-1 ec2.us-east-1.amazonaws.com REGION ap-northeast-1 ec2.ap-northeast-1.amazonaws.com REGION us-west-2 ec2.us-west-2.amazonaws.com REGION us-west-1 ec2.us-west-1.amazonaws.com REGION ap-southeast-1 ec2.ap-southeast-1.amazonaws.com REGION ap-southeast-2 ec2.ap-southeast-2.amazonaws.com $ export EC2_URL=https://ec2.ap-northeast-1.amazonaws.com なんかもろもろ設定するのがめんどくさいので、exportで設定したものは.bashrcに記載しておいた。 あとwindowwsから設定したAuto Scalingの設定がなぜか此処で確認しようとしても出てこない。 各端末固有のところから設定できないんだろうか。 確かに自身のAutoScalingを消せないよな。勝手に死ぬし。 まずEIP系をやってみる #確認 $ ec2-describe-addresses ADDRESS 000.000.000.000. i--XXXXXXX vpc 以下略 #なんかIPとインスタンスIDが必要なようなので $ export INSTANS_ID=`curl[http://169.254.169.254/latest/meta-data/instance-id`](http://169.254.169.254/latest/meta-data/instance-id%60) % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 10 100 10 0 0 1216 0 --:--:-- --:--:-- --:--:-- 1428 $ echo $INSTANS_ID i--XXXXXXX $export EIP=000.000.000.000 #割当を外してみる(動かしているインスタンスからやったので、勝手に接続が切れてSSHが落ちました) $ ec2-disassociate-address $EIP ADDRESS 000.000.000.000 $ ec2-associate-address -i $INSTANCE_ID $EIP ADDRESS 000.000.000.000 i-XXXXXXX eipassoc-YYYYYYYY $ echo $? 0 #オッケイっぽいっすね。 EBSをつけたり外したりしてみる。 今くっついているので、外してみる(起動中にやる無茶っぷり) $ export EBS_DATA=vol-XXXXXXX $ echo $EBS_DATA vol-XXXXXXX $ ec2-detach-volume $EBS_DATA ATTACHMENT vol-XXXXXXX i-YYYYYYYY /dev/sdf detaching 2013-10-11T03:33:32+0000 $ echo $? 0 なんかうまく言ったっぽいですね。 コンソールを確認したらavailableでちゃんと外れてるっぽいすね。 そのままマウントまでやっちゃいますか。 [ryo@ip-172-31-0-148 ~]$ export DEVICE=/dev/sdf [ryo@ip-172-31-0-148 ~]$ ec2-attach-volume $EBS_DATA -i $INSTANCE_ID -d $DEVICE ATTACHMENT vol-XXXXXXX i-YYYYYYYY /dev/sdf attaching 2013-10-16T14:50:27+0000 dfで見た時にマウントされてなかったので、mountまでしてあげてという感じ。 ということはやっぱりunmountしてあげなきゃいけなかったっぽ。 というわけでなんとかコマンドベースでできることがわかったので、 次回はcloudinit か initスクリプトでこれらをやって何事もなかったかのように振る舞うの巻です。Tweet