使用terraform plan --refresh-only误报空tags漂移问题求助
执行terraform plan --refresh-only检测资源漂移时,部分资源(如示例中的aws_iam_role.lalala_poweruser)被标记存在外部变更,但仅显示+ tags = {}(空映射),而实际基础设施中该属性并未被修改:
# aws_iam_role.lalala_poweruser has changed ~ resource "aws_iam_role" "lalala_poweruser" { id = "lalala_poweruser" name = "lalala_poweruser" + tags = {} # (11 unchanged attributes hidden) }
已尝试以下方案,但问题未解决:
- 为每个资源显式添加空映射
{}的tags属性 - 为每个资源添加真实业务标签的
tags属性 - 在AWS Provider配置中启用
defaults_tags
我们的目标是在CI/CD流水线中通过该命令自动识别真实的资源漂移,一旦检测到则终止部署并记录差异。
相关文档参考(翻译自HashiCorp官方教程)
执行refresh-only计划
terraform plan --refresh-only命令会对比Terraform状态与真实基础设施的当前状态,生成一个仅包含状态更新的计划,不会对基础设施进行任何变更。该命令的核心作用是发现资源漂移——即基础设施实际状态与Terraform记录状态不一致的情况。当检测到漂移时,Terraform会显示哪些属性发生了变化,帮助你确认是否需要更新配置或修正基础设施。
内容的提问来源于stack exchange,提问作者Nestor Colt
相关产品推荐
相关产品推荐

