如何在 terraform apply 中移动 terraform 资源
How to move terraform resource in terraform apply
我在我的 terraform 模块中定义了自定义资源:
resource "aws_alb_target_group" "whatever"
{
....
}
原来whatever
这个名字不好,我需要更新它。
经典的做法是登录到每个环境并执行 terraform state mv
,但是我有很多环境,并且没有自动执行此类操作。
如何在不手动移动状态的情况下更改资源名称(仅通过编辑 Terraform 模块和应用计划)?
根据问题中的解释,我猜你最好的选择是使用 moved
块 [1]。因此,例如,在您的情况下是:
resource "aws_alb_target_group" "a_much_better_whatever"
{
....
}
moved {
from = aws_alb_target_group.whatever
to = aws_alb_target_group.a_much_better_whatever
}
编辑:正如@Matt Schuchard 指出的那样,moved
块仅适用于 Terraform 版本 >=1.1.0
。
编辑 2:根据@Martin Atkins 的评论,将资源名称更改为 移动到 而不是 从 [= 移动的资源名称26=].
[1] https://www.terraform.io/language/modules/develop/refactoring#moved-block-syntax
我在我的 terraform 模块中定义了自定义资源:
resource "aws_alb_target_group" "whatever"
{
....
}
原来whatever
这个名字不好,我需要更新它。
经典的做法是登录到每个环境并执行 terraform state mv
,但是我有很多环境,并且没有自动执行此类操作。
如何在不手动移动状态的情况下更改资源名称(仅通过编辑 Terraform 模块和应用计划)?
根据问题中的解释,我猜你最好的选择是使用 moved
块 [1]。因此,例如,在您的情况下是:
resource "aws_alb_target_group" "a_much_better_whatever"
{
....
}
moved {
from = aws_alb_target_group.whatever
to = aws_alb_target_group.a_much_better_whatever
}
编辑:正如@Matt Schuchard 指出的那样,moved
块仅适用于 Terraform 版本 >=1.1.0
。
编辑 2:根据@Martin Atkins 的评论,将资源名称更改为 移动到 而不是 从 [= 移动的资源名称26=].
[1] https://www.terraform.io/language/modules/develop/refactoring#moved-block-syntax