前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何处理terraform中tfstate与线上不一致的状态

如何处理terraform中tfstate与线上不一致的状态

原创
作者头像
王罡
发布2019-12-09 20:15:55
2.6K0
发布2019-12-09 20:15:55
举报
文章被收录于专栏:生态产品生态产品

在处理客户需求的时候,曾经遇到过客户在线上删除了资源,但是本地资源编排不能处理tfstate状态与线上资源不一致的情况,这时候会读到空的资源引用,进而导致terraform crash。虽然现在在tencent terraform的最新版本中,基本上所有资源都能处理这个情景,但是如果你使用的是一些比较早的版本同时也遇上了类似问题,可以看一下下面的解决方案。

这里使用CAM policy这个资源作为例子来描述具体的方法。在本地新创建的tf文件

代码语言:javascript
复制
resource "tencentcloud_cam_policy" "example" {
  name     = "example-name"
  document = "${var.policy_document}"
}

apply并且create 成功后,这时手动在控制台上将其删除。此时,这个资源已经不存在,但是tfstate文件内存在这个资源的状态。如果直接apply,refresh会造成crash。

解决方案一:升级tencent terraform版本到较高版本。再次apply可以避免crash。

解决方案二:如果不想升级,可以手动处理tfstate文件状态。

在terraform 命令行内输入:

代码语言:javascript
复制
terraform state rm tencentcloud_cam_policy.example

rm命令后面分别是 这个资源的名称命名属性,成功删除后,就能保证tfstate内与线上一致了。再次apply就可以避免crash。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
访问管理
访问管理(Cloud Access Management,CAM)可以帮助您安全、便捷地管理对腾讯云服务和资源的访问。您可以使用CAM创建子用户、用户组和角色,并通过策略控制其访问范围。CAM支持用户和角色SSO能力,您可以根据具体管理场景针对性设置企业内用户和腾讯云的互通能力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档