使用Terraform,如何从端口到端口创建谷歌防火墙

时间:2018-01-04 10:51:49

标签: google-cloud-platform terraform

我已使用from_port / to_port功能在AWS上创建了防火墙(安全组)。 例如,我在这里创建一个从端口5000到端口5100的SG,从端口6000到6100,从端口7000到7100 ...

volatile int

我正在尝试用谷歌做同样的事情,但似乎没有from_to选项。 我希望能够做得更干,而不是重复端口。另一个很好的理由是我正在使用带有包含端口的变量的terraform模块来打开。 所以我想避免这样的事情。

variable "list_port" {
    type = "list"
    default = [
    "5000-5100",
    "6000-6100",
    "7000-7100",
  ]
}

resource "aws_security_group" "test" {
  name     = "test"
}

resource "aws_security_group_rule" "test" {
  count             = "${length(var.list_port)}"
  type              = "ingress"
  from_port         = "${ element(split("-", element(var.list_port, count.index)), 0) }"
  to_port           = "${ element(split("-", element(var.list_port, count.index)), 1) }"
  protocol          = "TCP"
  cidr_blocks       = ["0.0.0.0/0"]
  security_group_id = "${aws_security_group.test.id}"
}

有谁知道更好的解决方案吗?

由于

BR,

埃里克

1 个答案:

答案 0 :(得分:1)

您可以在数组中指定端口范围:

resource "google_compute_firewall" "gaming-blacknut" {
    name          = "test"
    direction     = "INGRESS"
    allow {
        protocol = "tcp"
        ports    = ["5000-5100"]
   }
} 

修改

在看到您的问题后,我相信您仍然可以在allow规则中使用端口范围,特别是变量。

示例:

    allow {
        protocol = "tcp"
        ports    = ["${var.list_port}"]  // You may not need the surrounding [ ] as the variable is already defined as a list.
   }

您可以在documentation中使用单个端口列表和端口范围查看示例规则。