Terraform,Main.tf,刷新和漂移



我有一个AWS Terraform repo,其中有一个用于AWS解决方案的架构。

随着时间的推移,人们已经进入管理控制台,在不更改地形代码的情况下对体系结构进行了更改,导致回购和aws上的实际体系结构之间出现漂移。

有没有一种方法可以更改检测漂移并更新我的main.tf文件以匹配新架构?我知道你可以使用terraform apply -refresh来更新状态文件,但这也会影响main.tf文件吗?有人能解决这样的问题吗?这样我的所有文件都能正确更新吗?谢谢

他影响了main.tf文件以及

遗憾的是,main.tf没有受到影响。

有人能解决这样的问题吗?这样我的所有文件都能正确更新吗?

除非您开发自己的解决方案,否则这样的解决方案是不存在的。您必须手动更新main.tf以匹配资源的状态。

然而,former2可以提供一些帮助,它可以扫描您的资源并生成地形代码。

Terraform评估给定配置以确定所需状态的工作本身就是有损耗的。用于生成计划的所需状态以及通过应用该计划获得的更新状态仅包括评估任何表达式所产生的最终值,并且通常不可能将更新后的值反转回将生成这些值的更新后的表达式。

例如,假设你有一个这样的论点:

foo = sha1("hello")

这产生了字符串"SHA-1"的SHA-1校验和;你好";。如果有人更改了远程系统中的校验和,Terraform可以看到校验和不再匹配,但它无法确定必须向sha1提供什么新字符串才能产生新的校验和。这是一个使用固有不可逆函数的极端例子,但这个一般问题适用于任何定义不仅仅是字面值的参数。

相反,terraform plan -refresh-only将向您显示上一次运行结果和刷新状态之间的差异,这样您就可以看到每个参数的最终结果是如何变化的。您需要手动更新配置,以便它以某种方式生成与该结果匹配的值,这有时就像将值直接复制到您的配置中一样简单,但通常更复杂,因为resource块中的参数可以从模块中其他地方的数据中派生,并使用Terraform函数进行任意转换。

最新更新