Amazon web services 使用Terraform更新和附加AWS上现有资源的新属性
我对Terraform非常陌生,很兴奋能使用它 我已经通过Terraform创建了Amazon web services 使用Terraform更新和附加AWS上现有资源的新属性,amazon-web-services,terraform,terraform-provider-aws,Amazon Web Services,Terraform,Terraform Provider Aws,我对Terraform非常陌生,很兴奋能使用它 我已经通过Terraform创建了安全组A,我想将安全组A附加到现有安全组B中。我试图弄清楚它看起来像javascript中的对象赋值和扩散操作符 我想象如下 data "aws_security_group" "A" { id = "<id>" } resource "aws_security_group" "A" { ...
安全组A
,我想将安全组A
附加到现有安全组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]
}
是否有任何语法或调整来实现我想要的?任何引用和关键字都会让我高兴
(更新)几乎真实的代码
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
]
}
}
我想将安全组A附加到现有的安全组B中
如果不是由AWS使用AWS\u security\u group
管理,则不能直接修改terraform(TF)中的SG B。要做到这一点,你必须将B转换为TF。这将允许您修改它
要避免导入过程,可以使用。这将只创建需要的规则,并将其附加到现有的SG B,即使它不是由TF管理的
因此,使用aws\u security\u group\u rule
可以执行(伪代码):
我想将安全组A附加到现有的安全组B中
如果不是由AWS使用AWS\u security\u group
管理,则不能直接修改terraform(TF)中的SG B。要做到这一点,你必须将B转换为TF。这将允许您修改它
要避免导入过程,可以使用。这将只创建需要的规则,并将其附加到现有的SG B,即使它不是由TF管理的
因此,使用aws\u security\u group\u rule
可以执行(伪代码):
你能提供实际的、可复制的代码吗?因为它不清楚什么是
…data.aws\u security\u group.A、
或ingres=[…data.aws\u security\u group.A.ingres]
,以及其他的意思。@Marcin更新了,我正在尝试的是当前代码,与示例没有什么不同。你能提供实际的、可复制的代码吗,因为它不清楚什么是…data.aws\u security\u group.A,
或ingres=[…data.aws\u security\u group.A.ingres]
,以及其他的意思。@Marcin更新了,这是我正在尝试的当前代码,与示例没有什么不同。谢谢。我是否可以在不导入的情况下访问数据“aws\u安全组”B{id=“SG-B-id”}
?我对导入的用法相当困惑是的<代码>数据仅获取有关现有资源的信息<代码>导入将允许您完全管理要导入的资源。我认为我必须同时迁移和使用现有资源中的所有资源。谢谢。我是否可以在不导入的情况下访问数据“aws\u安全组”B{id=“SG-B-id”}
?我对导入的用法相当困惑是的<代码>数据仅获取有关现有资源的信息<代码>导入将允许您完全管理要导入的资源。我认为我必须采取两种方式来迁移和使用现有资源中的所有资源。
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" "B" {
id = "SG-B-id"
}
resource "aws_security_group_rule" "ruleB" {
type = "ingress"
from_port = 0
to_port = 65535
protocol = "tcp"
source_security_group_id = aws_security_group.A.id
security_group_id = data.aws_security_group.B.id
}