On , I learnt ...

How to conditionally include items in a Terraform list

It’s not obvious how to build a Terraform list where an item is only included if some condition is met. One solution is to use flatten along with a conditional expression.

Something like this:

resource "aws_security_group" "this" {
  ...
  ingress {
    ...
    security_groups = flatten([
      aws_security_group.server-type-a.id,
      var.include_server_type_b ? aws_security_group.server-type-b[*].id : []
    ])
  }

where the server-type-b security group is only included the security_groups list if var.include_server_type_b is truthy.