Terraform AWS-EC2-Sicherheitsgruppen

Dec 29 2020

Ich bin ziemlich beschäftigt damit, mehr über Terraform zu erfahren, aber ich habe ein Problem, von dem ich keine Ahnung habe, wie ich es umgehen / beheben soll.

Das Problem ist wie folgt: In meinem Skript generiere ich eine ec2-Instanz (AWS) mit ein paar Nebeneffekten wie en EIP und einer Sicherheitsgruppe aus einem Modul, was alles einwandfrei funktioniert. Aber ich kann nicht herausfinden, wie die Sicherheitsgruppe an den Computer angehängt werden soll. Jetzt wird sie erstellt und das wars.

Der Code lautet wie folgt:

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
}

Oben ist die Hauptdatei und ich lade das folgende Modul:

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

Der letzte Schritt ist das Anhängen der Sicherheitsgruppe an den Computer, aber auch hier keine Ahnung, wie das geht. Ich habe mehrere Dokumente gelesen und versucht zu googeln, aber ich kann die Antwort anscheinend nicht finden oder die Antwort funktioniert bei mir nicht. Hoffentlich könnt ihr mir weiter helfen.

Vielen Dank für Ihre Zeit, sehr geschätzt!

Antworten

3 AsriBadlah Dec 29 2020 at 21:05

Im Modul aws_security_group müssen Sie die Sicherheitsgruppen-ID ausgeben, indem Sie Folgendes in ./modules/services/Security groups // main.tf hinzufügen

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

Fügen Sie dann in Ihrer Haupt-TF-Datei die Sicherheitsgruppe wie folgt an Ihre Instanz an:

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
}