【发布时间】:2021-04-26 14:38:54
【问题描述】:
我是 Terraform 的新手,很高兴能使用它。
我已经通过 Terraform 创建了 security group A,我想将 security group A 附加到 existing security group B 中。我试图弄清楚它看起来像 javascript 中的对象分配和传播运算符。
我想象如下,
data "aws_security_group" "A" {
id = "<id>"
}
resource "aws_security_group" "A" {
...data.aws_security_group.A,
ingress = [ ...data.aws_security_group.A.ingress]
}
这是我目前的想法,
resource "aws_security_group" "A" {
vpc_id = var.a_vpc_id
ingress = [module.eks.aws_security_group.cluster] // I only want to add this ingress into the existing ingress at security group A
lifecycle = {
ignore_changes = [
ingress // ignore existing ingress
]
}
}
是否有任何语法或调整来完成我想要的?任何参考和关键字都会让我开心。
(更新)几乎是真实的代码。
variable "internal_vpc_id" {
default = "vpc-12345678"
}
module "eks" {
....
}
resource "aws_security_group" "internal" {
vpc_id = var.internal_vpc_id
ingress = [
module.eks.aws_security_group.cluster,
module.eks.aws_security_group.workers,
module.eks.aws_security_group_rule.cluster_egress_internet,
module.eks.aws_security_group_rule.cluster_https_worker_ingress
]
lifecycle {
ignore_changes = [
ingress
]
}
}
【问题讨论】:
-
您能否提供实际的、可重现的代码,因为不清楚
...data.aws_security_group.A,或ingress = [ ...data.aws_security_group.A.ingress]以及其他人的含义。 -
@Marcin 已更新,这是我正在尝试的当前代码,与示例并没有真正的不同。
标签: amazon-web-services terraform terraform-provider-aws