読者です 読者をやめる 読者になる 読者になる

qphoney記

beta

CloudFormationはもう古い!ワンライナーでVPCを作ってみた!

AWS Advent Calendar 2012
11日のリーダーです。

CloudFormation使ってますか?
便利ですよね。

でも、僕達ワンライナーには必要ない!ない!

1行で世界を作ってやる!

% VPCID=$(ec2addvpc 10.100.0.0/16 | cut -f 2 ) && sleep 30 | SUBNETA=$(ec2addsubnet -c $VPCID -i 10.100.1.0/24 -z ap-northeast-1a| cut -f 2) && SUBNETB=$(ec2addsubnet -c $VPCID -i 10.100.2.0/24 -z ap-northeast-1b| cut -f 2) && IGW=$(ec2addigw | cut -f 2) && sleep 15 | ec2attigw $IGW -c $VPCID | RTB=$(ec2drtb | grep $VPCID | cut -f 2) ; ec2assocrtb $RTB -s $SUBNETA && ec2addrt $RTB -r 0.0.0.0/0 -g $IGW | INSTANCEA=$(ec2run ami-4e6cd34f -k SSH鍵指定 -t t1.micro -s $SUBNETA) && INSTANCEB=$(ec2run ami-4e6cd34f -k SSH鍵指定 -t t1.micro -s $SUBNETB) &&  EIPASSOS=$(ec2allocaddr -d vpc | cut -f 4) && sleep 15 | INSAID=$(ec2din | grep $SUBNETA | grep -v NIC | cut -f 2) && ec2assocaddr -a $EIPASSOS -i $INSAID --allow-reassociation

実際は1行です。
イメージはこんな感じ。
f:id:qphoney:20121211194123p:plain
解説すると、

  • 10.100.0.0/16のVPCを作る
  • Zone-Aに10.100.1.0/24のサブネットを作る
  • Zone-Bに10.100.2.0/24のサブネットを作る
  • インターネットゲートウェイを作る
  • 作ったVPCに作ったインターネットゲートウェイをアタッチする
  • 10.100.1.0/24がインターネットアクセス出来るようにRouteTableを書き換える
  • AmazonLinuxを10.100.1.0/24に1台起動。t1.micro。
  • AmazonLinuxを10.100.2.0/24に1台起動。t1.micro。
  • VPC用のEIPを取得
  • 10.100.1.0/24に起動したEC2インスタンスにEIPを付与

途中で&&とかsleepを入れるのがミソです。
(AWSの各リソースは即時反映ではなく若干の待ちが発生する)

でも…

実はまだ動作確認が取れてないんです。
途中で変数が消えるんです。
つまりギブアップ。
教えて!エロい人!

感想

書いてて思ったんですが、CloudFormationってやっぱり便利ですよね。