新卒入社後、AWSをさわる機会が多くWebUIでポチポチインスタンス作ったりスナップショット作ったりしていたが、正直めんどくさい。 aws command line interfaceを使って楽に運用できるようになろうぜ!っていうAWS初心者の記事です。

ポチポチするより早く確実に作業するためにrubyで運用スクリプトを書いてみました。

正直内容的にはお粗末ですが、こういうのあればちょっとでも手抜きができるかと・・・

ソースはこちら

この記事は「AWS Advent Calendar 2013」の8日目になります。


経緯

  • AWS EC2でInstanceを立ててみたものの、VolumSizeを変えたくなった。
  • スナップショットとってVolume新しくVolume作ってdetach,atachからresizeという流れのポチポチがめんどくすぎる!
  • コマンド一発であとは走らせとくだけにしたい

環境

  • CentOS 6.4
  • ruby 1.9.3
  • aws command line intaerface インストール済み
  • 実行場所から対象EC2インスタンスへrootでログインできること

動作内容

  1. 対象EC2にチェック用ファイルを作成
  2. 対象EC2をStop
  3. 対象EC2の/にmountされてるVolumeからSnapshotを作成
  4. 作成したSnapshotから指定したサイズの新規Volumeを作成
  5. 対象EC2にattachされているVolumeをdettach
  6. 新規Volumeを対象EC2にattach
  7. 対象EC2をStart
  8. 対象EC2の/にmountされてるファイルシステムをresize
  9. 対象EC2にチェック用ファイルが残っているか確認
  10. チェック用ファイル削除
  11. 過程で作成したSnapshotを削除(選択式)
  12. 過去のVolumeを削除(選択式)

実行サンプル

>./ec2InstanceVolumeUp.rb -i i-70fadf75 -n root -k ~/.ssh/goto_key.pem -s 11

aws ec2 describe-instances --instance-ids i-70fadf75
aws ec2 describe-volumes --volume-ids vol-a9936aff
ssh -i ~/.ssh/goto_key.pem root@172.31.15.235 touch ssh_chk.txt
ssh -i ~/.ssh/goto_key.pem root@172.31.15.235 df / | grep / | cut -d' ' -f1
instance stopping
aws ec2 stop-instances --instance-ids i-70fadf75
....stopped
aws ec2 create-snapshot --volume-id vol-a9936aff
....completed
Snapshot作成完了 : snap-7fecba5a
aws ec2 create-volume --snapshot-id snap-7fecba5a --size 11 --availability-zone ap-northeast-1a
aws ec2 describe-volumes --volume-ids vol-7e2dd428
.available
新規Volume作成完了 : vol-7e2dd428
device detaching
aws ec2 detach-volume --volume-id vol-a9936aff
aws ec2 describe-volumes --volume-ids vol-a9936aff
.available
旧Volume detach完了 : vol-a9936aff
device attaching
aws ec2 attach-volume --volume-id vol-7e2dd428 --instance-id i-70fadf75 --device /dev/sda
aws ec2 describe-volumes --volume-ids vol-7e2dd428
.in-use
新規Volume attach完了 : vol-7e2dd428
instance starting
aws ec2 start-instances --instance-ids i-70fadf75
..running
aws ec2 describe-instances --instance-ids i-70fadf75
ssh -i ~/.ssh/goto_key.pem root@172.31.15.235 resize2fs /dev/xvde
resize2fs 1.41.12 (17-May-2010)
ssh -i ~/.ssh/goto_key.pem root@172.31.15.235 cat ssh_chk.txt
ssh -i ~/.ssh/goto_key.pem root@172.31.15.235 rm -f ssh_chk.txt
aws ec2 delete-volume --volume-id vol-a9936aff
vol-7e2dd428 削除完了
Finish!!

あとから思ったこと

  • aws-sdkでもよかたんやん・・・
  • まぁ簡単なツールはこれぐらいのスクリプトでもよいのかと・・・
  • のちのちはjenkinsとかに色々組み込みたい。


blog comments powered by Disqus

Published

08 December 2013

Tags