如何仅针对新增的Terraform Output执行apply操作?
问题描述
我想要添加一个Output用于terraform_remote_state数据源,示例代码如下:
output "acm_certificate_arn" { value = module.acm_certificate.arn description = "arn main certificate" }
执行terraform plan后显示的变更包含:
Changes to Outputs: + acm_certificate_arn = [ + "arn:aws:acm:eu-west-123:11111111111:certificate/e6f1edf300--f33fl-number", ]
由于远程基础设施已变更、状态文件未更新等原因,我无法执行apply或refresh操作。请问是否可以使用类似plan --target=output.acm_certificate_arn的方式仅针对该Output执行操作?还是只能通过修改状态文件来添加所需的Output?(我曾尝试针对无变更的资源执行target apply,但没有效果)
回答
- Terraform不支持使用
--target参数直接针对Output执行apply操作。Output不属于Terraform的资源范畴,--target仅能作用于资源对象,哪怕plan中显示有Output变更,指定target为output也不会触发任何实际操作,这也是你之前尝试针对无变更资源执行target apply无效的原因。 - 目前唯一可行的办法是手动修改状态文件,步骤如下:
- 导出当前状态到本地文件:
terraform state pull > state.json - 打开
state.json,找到"outputs"节点,添加对应的输出定义(参考现有output的结构,确保值和类型匹配):"acm_certificate_arn": { "value": "arn:aws:acm:eu-west-123:11111111111:certificate/e6f1edf300--f33fl-number", "type": "string" } - 将修改后的状态文件推回远程存储:
terraform state push state.json - 验证结果:执行
terraform output acm_certificate_arn,确认能正确读取到该值,此时terraform_remote_state即可正常引用这个输出。
- 导出当前状态到本地文件:
内容的提问来源于stack exchange,提问作者SimonSK
相关产品推荐
相关产品推荐

