Các nhóm bảo mật Terraform AWS-EC2

Dec 29 2020

Tôi khá bận rộn với việc cố gắng tìm hiểu thêm về Terraform nhưng tôi đang gặp một vấn đề mà tôi không có manh mối về cách khắc phục / sửa chữa.

Vấn đề là như sau, trong tập lệnh của tôi, tôi đang tạo một phiên bản ec2 (AWS) với một số nội dung phụ như en EIP và nhóm bảo mật từ một mô-đun, tất cả đều hoạt động tốt. Nhưng tôi không thể tìm ra cách gắn nhóm bảo mật vào máy, bây giờ nó đang được tạo và thế là xong.

Mã như sau:

data "aws_ami" "latest" {
  most_recent = true
  owners = [ "self"] 

    filter {
      name = "name"
      values = [ lookup(var.default_ami, var.ami) ]
    }
}

module "aws_security_group" {
  source = "./modules/services/Security groups/"
  server_port = 443
}

resource "aws_instance" "test-ec2deployment" {
  ami                           = data.aws_ami.latest.id
  instance_type                 = var.instance_type
  subnet_id                     = var.subnet_id
  availability_zone             = var.availability_zone
  associate_public_ip_address   = var.public_ip
  
  root_block_device {
    volume_type                 = "gp2"
    volume_size                 = 60
    delete_on_termination       = true
  }
  
   tags = {
    Name                        = "Testserver2viaTerraform"
  }
}

resource "aws_eip" "ip" {
  instance = aws_instance.test-ec2deployment.id
}

resource "aws_eip" "example" {
  vpc = true
}

Trên đây là tệp chính và tôi đang tải mô-đun sau:

resource "aws_security_group" "my-webserver" {
  name        = "webserver"
  description = "Allow HTTP from Anywhere"
  vpc_id      = "vpc-"
  ingress {
    from_port   = 80
    to_port     = 80
    protocol    = "tcp"
    cidr_blocks = ["0.0.0.0/0"]
  }
  egress {
    from_port   = 0
    to_port     = 0
    protocol    = "-1"
    cidr_blocks = ["0.0.0.0/0"]
  }
  tags = {
    Name = "my-webserver"
    Site = "my-web-site"
  }
}

Bước cuối cùng là gắn nhóm bảo mật vào máy nhưng một lần nữa, không có manh mối nào về cách thực hiện điều đó. Tôi đã đọc một số tài liệu và cố gắng google nhưng dường như tôi không thể tìm thấy câu trả lời hoặc câu trả lời không phù hợp với tôi. Vì vậy, hy vọng các bạn có thể giúp tôi thêm.

Cảm ơn thời gian của bạn, đánh giá cao!

Trả lời

3 AsriBadlah Dec 29 2020 at 21:05

Trong mô-đun aws_security_group, bạn cần xuất id nhóm bảo mật bằng cách thêm thông tin sau vào ./modules/services/Security groups // main.tf

output "securitygroup_id" {
  value = aws_security_group.my-webserver.id
}

thì trong tệp tf chính của bạn, hãy đính kèm nhóm bảo mật vào phiên bản của bạn như sau:

resource "aws_network_interface_sg_attachment" "sg_attachment" {
  security_group_id    = module.aws_security_group.securitygroup_id
  network_interface_id = aws_instance.test-ec2deployment.primary_network_interface_id
}