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行です。
イメージはこんな感じ。
解説すると、
- 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ってやっぱり便利ですよね。