Terraformでセキュリティグループを管理する
AWS
Published: 2015-03-22

 Terraformによるセキュリティグループ管理に関するメモ。

 Terraformのバージョンアップにより、タグ付けやegressのルールが使えるようになったので、マネジメントコンソールと同じ事ができるようになっています。

version IMPROVEMENTS
0.3.7 (February 19, 2015) provider/aws: Security group support egress rules. [GH-856]
0.3.1 (October 21, 2014) providers/aws: Support tags for security groups.

ファイル構成

 tfファイルで利用する変数を定義するためのファイル

 tfファイルで利用する変数に値を代入するためのファイル

 実際の処理を書いたファイル。WEBサーバ向けにHTTPを全許可するセキュリティグループを作ります。

セキュリティグループの作成

まずはterraform plan

 問題なさそうなのでterraform apply

 1 addedとなっています。terraform showで今の状態を確認します。sg-8a53d6efができました。

 マネジメントコンソールでも、Terraformの指示通りのセキュリティグループが作成されたことが確認できます。

 

ルールの追加(Inbound)

 inboundにHTTPSを追加してみましょう。

 tfファイルを編集後、terraform planからのterraform applyterraform show

 1 changedとなっています。既存のリソースに変更が発生しました。マネジメントコンソール上で確認すると、inboundにHTTPSが増えています。

 

ルールの追加(Outbound)

 新たにサポートされたegressも使ってみます。sg-2da11148がNATインスタンスに適用されている体で、sg-2da11148向けのOutbound全通信を許可するルールを追加します。

 許可対象にセキュリティグループを利用する時は、cidr_blocksではなくsecurity_groupsを利用します。

 tfファイルを編集後、terraform planからのterraform applyterraform show

 1 changed となっています。既存のリソースに変更が発生しています。マネジメントコンソール上で確認すると、outboundにsg-2da11148向けのALL Trafficが増えています。