首页 > 解决方案 > 有没有办法重用 terraform 脚本并对其进行更改?

问题描述

我是这个 terraform 世界的新手,我被分配到创建许多配置以适应它的任务。

我正在开发一个main.tf脚本(它创建一些资源,如资源组、vnet、kubernetes 集群、应用程序服务等),并且在对其进行编码和执行时 Terraform apply,它似乎只应用了实际更新所做的更改。

然后我们删除了脚本创建的资源组,我的一个同事必须使用 terraform 运行相同的脚本,创建一个具有另一个名称的资源组,因为我没有所需的权限,之后,如果我运行命令Terraform apply它会失败并且给出错误,表示无法创建资源,因为它已经存在。

在阅读了一些文档后,我发现这可能是因为状态 https://www.terraform.io/docs/state/index.html

脚本的更新是否仅适用于每个 terraform 会话?

即使做一个Terraform refresh似乎也不起作用。或者可能我只是弄错了,没有办法更新一些资源。

编辑:由于某种原因,存储中的状态文件只有一些东西,解决方案是删除所有内容并重新创建。

标签: terraformterraform-provider-azure

解决方案


如果其他人terraform apply因为您没有访问权限而为您运行,而现在您想修改该 terraform 并自己运行它,您需要获取其他人运行它时生成的状态文件。您绝对必须在某处维护 Terraform 状态文件,以便在后续运行时可以访问它。您应该真正配置Terraform 后端,而不是使用本地状态文件。

您需要注意,Terraform 将它所做的一切都存储在状态文件中,并在每次运行之前引用该文件。Aterraform refresh只告诉 Terraform 刷新状态文件中事物的状态,它不会从头开始重建状态文件。了解 Terraform 状态文件对于使用 Terraform 非常重要,因此您在使用它之前确实需要了解这一点。


推荐阅读