【发布时间】:2020-05-15 14:49:44
【问题描述】:
我正在对几个 Terraform 文件进行重构。其中一项任务是将资源从 kebab-case 重命名为 snake_case。
为了防止上述资源的破坏和再利用,我使用了terraform state mv。现在,出于某种原因,我希望在这里理解,它仍然会破坏资源。我看到 2 个问题:
1- 再次计算 ID。
2- 对变量的引用被视为文字。
例子:
-/+ aws_volume_attachment.att_ebs_caldat_axon_apps (new resource required)
id: "vai-4287143552" => <computed> (forces new resource)
device_name: "/dev/xvdb" => "/dev/xvdb"
force_detach: "true" => "true"
instance_id: "i-0ca294d44635d3ace" => "${module.instance_axon.instance_id}" (forces new resource)
volume_id: "vol-0298f5247bb2aa312" => "${aws_ebs_volume.ebs_caldat_axon_apps.id}" (forces new resource)
我正在使用 Terraform 0.11.14
移动该资源状态的命令是terraform state mv aws_volume_attachment.att-ebs-caldat-axon-apps aws_volume_attachment.att_ebs_caldat_axon_apps
我不知道我错过了什么。任何帮助表示赞赏。
【问题讨论】:
-
-
所以根据那篇文章,我应该在考虑资源依赖关系的情况下按特定顺序完成状态移动......老实说,我认为如果我一次完成所有这些工作......现在我想我需要弄清楚如何回滚状态,因为我在远程,而且它是一个生产环境。
-
我建议你备份你的状态文件(因为它是 prod )并尝试编辑状态
-
我执行的每个(显然)每个状态 mv 都有一个状态文件备份。对最旧的备份进行状态推送以恢复所有已执行的移动是否安全?它需要一个 -force 标志,因为“目标状态具有更高的序列号”
-
你能发布你的资源块代码吗?
标签: amazon-web-services terraform