0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

terraform プレフィックスリスト・セキュリティグループ作成

Posted at

最初に

terraformを業務で使用することになりました。
そのため勉強したことをまとめています。

terraform プレフィックスリスト作成

※値は意味のないものに変更しています。
※outputsも記載しないとtfstateファイルから値を取得できないため記載してください。

# プロバイダーとプロファイルの指定
provider "aws" {
  shared_credentials_files = ["~/.aws/credentials"]
  region                   = "ap-northeast-1"
  profile                  = "profile-name"
}

# プレフィックスリストの作成
resource "aws_ec2_managed_prefix_list" "prefix" {
  name           = "prefix"
  # 設定IPアドレスの種類を指定
  address_family = "IPv4"
  # プレフィックスリストに含められる数の最大数
  # 数に上限はありませんがセキュリティグループには最大60個しか登録できません。
  # そのためセキュリティグループで使用したい場合は実質上限は60個になります。
  max_entries    = 5

  entry {
    cidr        = "0.0.0.0/32"
    description = "test"
  }

  tags = {
    Name = "prefix"
  }
}

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

※値は意味のないものに変更しています。
※outputsも記載しないとtfstateファイルから値を取得できないため記載してください。

# プロバイダーとプロファイルの指定
provider "aws" {
  shared_credentials_files = ["~/.aws/credentials"]
  region                   = "ap-northeast-1"
  profile                  = "profile-name"
}
# alb用セキュリティグループ作成
resource "aws_security_group" "test-alb-sg" {
  # outputsで取得可能にしたvpc.idを指定してください。
  # 今回は省略していますがdataで事前に情報を取得する必要があります。
  vpc_id = "vpc.id"
  name   = "test-alb-sg"
  # インバウンドルールを指定しています。
  ingress {
    description = "HTTP"
    from_port   = 80
    to_port     = 80
    protocol    = "tcp"
    cidr_blocks = ["0.0.0.0/0"]
  }
  ingress {
    description = "HTTPS"
    from_port   = 443
    to_port     = 443
    protocol    = "tcp"
    cidr_blocks = ["0.0.0.0/0"]
  }
  # アウトバウンドルールを指定しています。
  # -1はすべてのプロトコルを許可しています。
  egress {
    from_port        = 0
    to_port          = 0
    protocol         = "-1"
    cidr_blocks      = ["0.0.0.0/0"]
  }
  tags = {
    Name = "test-alb-sg"
  }
}
# ec2用セキュリティグループ作成
resource "aws_security_group" "test-ec2-sg" {
  vpc_id = "vpc.id"
  name   = "test-ec2-sg"
  # インバウンドルールを指定しています。
  # プレフィックスリストで設定したIPアドレスからのSSH接続を許可しています。
  ingress {
    description = "SSH"
    from_port   = 22
    to_port     = 22
    protocol    = "tcp"
    prefix_list_ids = prefix.id
  }
  # albのセキュリティグループを通過してきた接続を許可しています。
  ingress {
    description = "alb"
    from_port   = 80
    to_port     = 80
    protocol    = "tcp"
    security_groups = [
      aws_security_group.test-alb-sg.id
    ]
  }

  egress {
    from_port        = 0
    to_port          = 0
    protocol         = "-1"
    cidr_blocks      = ["0.0.0.0/0"]
  }

  tags = {
    Name = "test-ec2-sg"
  }
}
# rds用のセキュリティグループ作成
resource "aws_security_group" "test-rds-sg" {
  vpc_id = "vpc.id"
  name   = "test-rds-sg"
  # インバウンドルールを指定しています。
  # ec2のセキュリティグループを通過してきた接続を許可しています。
  ingress {
    description = "MYSQL"
    from_port   = 3306
    to_port     = 3306
    protocol    = "tcp"
    security_groups = [aws_security_group.test-ec2-sg.id]
  }

  egress {
    from_port        = 0
    to_port          = 0
    protocol         = "-1"
    cidr_blocks      = ["0.0.0.0/0"]
  }

  tags = {
    Name = "test-rds-sg"
  }
}

最後に

outputsについては今回は記載しませんでした。
設定は必須です。(記載していませんが、、)
ec2やrdsについても書いて構築が出来たので書きたいです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?