Terraform-是否允许除特定端口之外的所有出站端口?
我在terraform中定义了这个AWS安全组:Terraform-是否允许除特定端口之外的所有出站端口?,terraform,terraform-provider-aws,Terraform,Terraform Provider Aws,我在terraform中定义了这个AWS安全组: resource "aws_security_group" "sg" { name = "${var.name}" description = "${var.description}" vpc_id = "${data.terraform_remote_state.vpc.vpc_id}" ingress { from_port = 80 to_port = 80 protocol =
resource "aws_security_group" "sg" {
name = "${var.name}"
description = "${var.description}"
vpc_id = "${data.terraform_remote_state.vpc.vpc_id}"
ingress {
from_port = 80
to_port = 80
protocol = "tcp"
cidr_blocks = ["0.0.0.0/0"]
}
ingress {
from_port = 443
to_port = 443
protocol = "tcp"
cidr_blocks = ["0.0.0.0/0"]
}
ingress {
from_port = 22
to_port = 22
protocol = "tcp"
cidr_blocks = ["${var.ext_blocks}"]
}
egress {
from_port = 0
to_port = 0
protocol = "-1"
cidr_blocks = ["0.0.0.0/0"]
}
}
通过此配置,任何端口都可以用作传出/出站端口。但是如果我想排除一些端口,建议的方法是什么
假设我想排除端口25和465,这样我可以做类似的事情(而不是使用允许任何端口的一个出口规则):
但这需要定义特定的范围,这需要定义一些额外的出口规则。有没有更好的办法?例如,我可以在哪里定义允许所有端口,然后排除一些端口的规则
例如,我可以定义规则来允许所有端口,然后排除一些端口
这开始触及AWS安全组的限制,因为它们可以,而且您可以(每个安全组总共有120条规则)
理想情况下,您可以定义这样的变量
variable "excluded_ports" { default=[25,465] }
然后,可以使用它来构建类似于您在问题中发布的内容(即从/到0-24、26-464和466-65535块)。不幸的是,这将是相当困难的,如果可能的话,将导致基于所提供的变量生成from/to端口的丑陋/黑客方式。这是因为最新(v0.11)版本的Terraform(参考和)目前不支持列表元素的映射,但Terraform v0.12将使这些类型的操作更容易。非常确定,您不能-(如果您有很多排除项,您可以编写一个包装器脚本来吐出所需的TF代码,但是根据端口的数量,最终可能会达到每个SG的最大规则数。
variable "excluded_ports" { default=[25,465] }