22

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}"]
Jonathan Hall
  • 75,165
  • 16
  • 143
  • 189
pkaramol
  • 16,451
  • 43
  • 149
  • 324

1 Answers1

58

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
  }
Jakub Kania
  • 15,665
  • 2
  • 37
  • 47