如何在Terraform中仅应用输出变量定义

73次阅读
没有评论

问题描述

想要在Terraform中仅应用输出变量定义,但是无法成功。他尝试使用terraform apply -target=output.environment_information命令,但是没有看到任何输出。他想知道是否有可能在不定义任何资源/模块的情况下应用输出变量。请问有什么解决方法吗?

解决方案

请注意以下操作注意版本差异及修改前做好备份。

方案1

运行terraform apply -refresh-only命令可以解决这个问题。该命令会从每个资源中读取最新数据,然后根据这些更新更新所有输出,包括重新评估输出表达式以纳入任何更改。

方案2

你不能以这种方式使用资源定位,因为输出不是资源。但是,你可以运行一个简单的apply命令,因为Terraform是幂等的,这不会改变任何现有的基础架构,而只是将你的输出放入Terraform状态中。
你可以通过以下步骤测试:
1. 运行terraform plan命令,查看计划中的输出。
2. 运行terraform apply命令,将输出写入Terraform状态。
请注意,如果你有其他未应用/部分应用的更新,你可以选择以下两种方法之一:
– 将代码回滚到没有这些更新的状态,然后从状态中删除任何相关的资源(保留备份),然后再次运行apply命令。
– 手动编辑状态文件,更新锁定数据库中的哈希值。如果只有几个输出,我建议编辑状态文件,按照语法进行操作,并始终对状态进行版本控制,并在必要时备份一份副本。

正文完