Search code examples
amazon-web-servicesterraformaws-security-groupterraform-provider-aws

self-reference not allowed in Security Group definition


I am trying to create an sg with Terraform.

I want all instances of a particular SG to have all communication allowed among them, so I am adding the SG itself to the ingress rules as follows:

resource "aws_security_group" "rancher-server-sg" {
  vpc_id = "${aws_vpc.rancher-vpc.id}"
  name = "rancher-server-sg"
  description = "security group for rancher server"

  ingress {
      from_port = 0
      to_port = 0
      protocol = -1
      security_groups = ["${aws_security_group.rancher-server-sg.id}"]              
  }

However when running terraform plan, I get:


However, in the AWS console, I am allowed to add an SG name in the inbound rules and I see that I can add the group itself (i.e. self-referenced).

Why is that?

I have also tried this without success:

security_groups = ["${self.id}"]

Solution

  • Citing the manual:

    self - (Optional) If true, the security group itself will be added as a source to this ingress rule.

      ingress {
          from_port = 0
          to_port = 0
          protocol = -1
          self = true
      }