Terraform AWS-EC2 güvenlik grupları

Dec 29 2020

Terraform hakkında daha fazla şey öğrenmeye çalışmakla oldukça meşgulüm, ancak bir sorunla karşılaşıyorum, bunun nasıl çözüleceğine / düzeltileceğine dair hiçbir fikrim yok.

Sorun şu ki, betiğimde en EIP gibi birkaç yan şey ve bir modülden bir güvenlik grubu ile bir ec2 bulut sunucusu (AWS) oluşturuyorum, hepsi iyi çalışıyor. Ama güvenlik grubunu makineye nasıl ekleyeceğimi çözemiyorum, şimdi yaratılıyor ve hepsi bu.

Kod aşağıdaki gibidir:

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
}

Yukarıdaki ana dosya ve şu modülü yüklüyorum:

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"
  }
}

Son adım, güvenlik grubunu makineye bağlamaktır, ancak yine de bunun nasıl yapılacağına dair hiçbir ipucu yok. Birkaç dokümanı okudum ve google'ı denedim ama cevabı bulamıyorum veya cevap benim için çalışmıyor. Umarım bana daha fazla yardımcı olabilirsiniz.

Zaman ayırdığınız için teşekkürler, çok minnettarız!

Yanıtlar

3 AsriBadlah Dec 29 2020 at 21:05

Aws_security_group modülünde, aşağıdakileri ekleyerek güvenlik grubu kimliği çıkarmanız gerekir ./modules/services/Security groups // main.tf

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

ardından ana tf dosyanızda örneğinize aşağıdaki gibi güvenlik grubunu ekleyin:

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
}