terraform - 有没有办法重用 terraform 脚本并对其进行更改?
问题描述
我是这个 terraform 世界的新手,我被分配到创建许多配置以适应它的任务。
我正在开发一个main.tf
脚本(它创建一些资源,如资源组、vnet、kubernetes 集群、应用程序服务等),并且在对其进行编码和执行时
Terraform apply
,它似乎只应用了实际更新所做的更改。
然后我们删除了脚本创建的资源组,我的一个同事必须使用 terraform 运行相同的脚本,创建一个具有另一个名称的资源组,因为我没有所需的权限,之后,如果我运行命令Terraform apply
它会失败并且给出错误,表示无法创建资源,因为它已经存在。
在阅读了一些文档后,我发现这可能是因为状态 https://www.terraform.io/docs/state/index.html
脚本的更新是否仅适用于每个 terraform 会话?
即使做一个Terraform refresh
似乎也不起作用。或者可能我只是弄错了,没有办法更新一些资源。
编辑:由于某种原因,存储中的状态文件只有一些东西,解决方案是删除所有内容并重新创建。
解决方案
如果其他人terraform apply
因为您没有访问权限而为您运行,而现在您想修改该 terraform 并自己运行它,您需要获取其他人运行它时生成的状态文件。您绝对必须在某处维护 Terraform 状态文件,以便在后续运行时可以访问它。您应该真正配置Terraform 后端,而不是使用本地状态文件。
您需要注意,Terraform 将它所做的一切都存储在状态文件中,并在每次运行之前引用该文件。Aterraform refresh
只告诉 Terraform 刷新状态文件中事物的状态,它不会从头开始重建状态文件。了解 Terraform 状态文件对于使用 Terraform 非常重要,因此您在使用它之前确实需要了解这一点。
推荐阅读
- c# - 如何在 MVC 控制器中获取当前的 url 协议?
- c++ - 我不确定这段代码的行为。有人可以向我解释吗?
- r - 如何通过从两个不同的列中获取 x 轴值来绘制?
- c# - UWP 和 BitmapDecoder 问题 - 感觉像是线程问题
- python - concurrent.futures 库中 ProcessPoolExecutor 中的奇怪行为
- python-3.x - 这个继承的我的python tkinter网格在哪里?
- regex - 用正则表达式替换url中的字符
- c# - 当前上下文 C# 中不存在名称 VARname
- c - 在条件下生成随机数
- javascript - 如何将其转换为 html 可读代码?