在处理客户需求的时候,曾经遇到过客户在线上删除了资源,但是本地资源编排不能处理tfstate状态与线上资源不一致的情况,这时候会读到空的资源引用,进而导致terraform crash。虽然现在在tencent terraform的最新版本中,基本上所有资源都能处理这个情景,但是如果你使用的是一些比较早的版本同时也遇上了类似问题,可以看一下下面的解决方案。
这里使用CAM policy这个资源作为例子来描述具体的方法。在本地新创建的tf文件
resource "tencentcloud_cam_policy" "example" {
name = "example-name"
document = "${var.policy_document}"
}
apply并且create 成功后,这时手动在控制台上将其删除。此时,这个资源已经不存在,但是tfstate文件内存在这个资源的状态。如果直接apply,refresh会造成crash。
解决方案一:升级tencent terraform版本到较高版本。再次apply可以避免crash。
解决方案二:如果不想升级,可以手动处理tfstate文件状态。
在terraform 命令行内输入:
terraform state rm tencentcloud_cam_policy.example
rm命令后面分别是 这个资源的名称 和 命名属性,成功删除后,就能保证tfstate内与线上一致了。再次apply就可以避免crash。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。