Terraform一次移动了几个元素



我正在使用地形moved块来替换一些资源,而不破坏/重新创建它们。

这是一个资源列表,目前,我发现替换的唯一方法是使用几个moved

moved {
from = null_resource.default[0]
to = null_resource.default["0"]
}
moved {
from = null_resource.default[1]
to = null_resource.default["1"]
}
moved {
from = null_resource.default[2]
to = null_resource.default["2"]
}
...
moved {
from = null_resource.default[20]
to = null_resource.default["20"]
}

即使它工作得很好,我几乎可以肯定它不是最优化的方式。我有20个资源要替换,这只是20次复制/粘贴。

有更聪明的方法吗?使用循环,例如

感谢

我不知道您的完整用例,但在被移动的资源不是共享模块的一部分的情况下,因此它们只存在于少量状态中,那么使用CLI的经典方法来移动资源可能会更好。terraform state mv {from} {to}

另一个选择是,如果你不改变资源id的键,那么你不必单独指定每个键。

moved {
from = null_resource.default
to = null_resource.default_new
}

在您的示例中,您将密钥类型从数字更改为字符串。因此,如果这是必需的,这将没有帮助。

移动块是一个很好的工具,对共享模块非常有帮助,但它确实有这个限制。我也非常希望看到for_each支持添加到移动块。

相关内容

最新更新