この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので十分ご注意ください。
Terraformを利用してセキュリティグループを作成するときに、プロトコルやポート、ソースを指定しますよね。
ソースは絞って、プロトコルやポートは"すべて"を許可する場合の記述はどう書けばいいでしょうか。
公式リファレンスを見ても説明がわかりにくかったので、セキュリティグループのルールで"すべて"を指定する記述を紹介します。
☆☆☆☆☆☆☆☆☆↓Terraformを始めてみたい方はこちらをチェック↓☆☆☆☆☆☆☆☆☆☆
https://cloud5.jp/saitou-terraform-start/
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
SGルールで"すべて"を指定する記述
■Terraformで作成するSGルール
今回作成するセキュリティグループルールの詳細は以下の通りです。
ルール | プロトコル | ポート | ソース |
---|---|---|---|
インバウンドルール1 | すべて | すべて | MyIPアドレス |
インバウンドルール2 | すべて | すべて | VPC CIDRブロック |
アウトバウンドルール | すべて | すべて | 0.0.0.0/0 |
■TerraformのSGルールの記述
記述を紹介する前に、前提条件を確認ください。
【前提】
- tfvarsでMyIPアドレス(自身の環境のアドレス)を定義済み
- VPC作成の記述で"cidr_block"を定義済み
【記述ポイント】
- プロトコルを"すべて"にしたい場合は、"-1"と記述します。
- ポートを"すべて"にしたい場合は、"from_port"と"to_port"の値を両方とも"0"と記述します。
以下がTerraformのセキュリティグループ記述例です。
# ---------------------------
# Security Group
# ---------------------------
resource "aws_security_group" "sg1" {
name = "test-sg"
description = "test sg"
vpc_id = aws_vpc.vpc.id
ingress {
description = "All traffic from myip"
from_port = 0
to_port = 0
protocol = "-1"
cidr_blocks = ["${var.myip}"]
}
ingress {
description = "All traffic from vpc"
from_port = 0
to_port = 0
protocol = "-1"
cidr_blocks = [aws_vpc.vpc.cidr_block]
}
egress {
from_port = 0
to_port = 0
protocol = "-1"
cidr_blocks = ["0.0.0.0/0"]
}
tags = {
Name = "test-sg"
}
}
■検証
さきほど示した記述をAWSにapplyしてみますと、
↓インバウンドルール
↓アウトバウンドルール
両ルールとも最初に示したセキュリティグループルールの詳細どおりに、作成されてるのが確認できます。
今回は以上です。
まとめ:セキュリティグループのルールで"すべて"を指定する記述
Terraformの公式リファレンスを読んでもわからないことが多々あります。指定できる引数は書かれているのですが、引数の値に関しては説明が無い場合があるんですよね。
TerrraformでAWSクラウド環境を構築する際に、また詰まったらブログで発信していきます。
☆☆☆☆☆☆☆☆☆↓Terraformを始めてみたい方はこちらをチェック↓☆☆☆☆☆☆☆☆☆☆
https://cloud5.jp/saitou-terraform-start/
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
参考リンク:Terraform-AWSドキュメント-リソース: aws_security_group
↓ほかの協栄情報メンバーも自動化に関する記事を公開しています。ぜひ参考にしてみてください。
■Terraformの概要と使用方法(higa)
https://cloud5.jp/terraform_summary/
■AWS CodePipeline を利用してS3の静的ウェブサイトの更新を自動化する(tatsuoka)
https://cloud5.jp/tatsuoka-handson-beginner-codepipeline/
■AWS上にopenstackを構築(liuwanying)
https://cloud5.jp/openstack-install/
■Ansibleを利用してwindowsOSのインスタンスを操作する方法(umemoto)
https://cloud5.jp/control-windows-fromansible/