Terraform 初始状态文件创建
Posted
技术标签:
【中文标题】Terraform 初始状态文件创建【英文标题】:Terraform initial state file creation 【发布时间】:2016-04-29 10:04:04 【问题描述】:有没有办法从现有的基础设施创建 terraform 状态文件。例如,AWS 账户附带一些已经到位的服务(例如:默认 VPC)。
但是 terraform 似乎只知道它创建的资源。所以,
-
将现有 AWS 基础设施迁移到 Terraform 代码的最佳方法是什么
是否可以手动添加资源并手动修改状态文件(不良影响?)
更新
Terraform 0.7.0
支持导入单个资源。
【问题讨论】:
这还不可能,但已经讨论了很长时间。 github.com/hashicorp/terraform/issues/581 【参考方案1】:对于相对较小的事情,我在手动修改状态文件以添加存根资源方面取得了一些成功,然后我在顶部继续使用 Terraform(特别是使用预先存在的 VPC 和子网,然后使用 Terraform 应用安全组等)。
对于更复杂的事情,有一个名为terraforming
的非官方工具,我听说它非常擅长生成 Terraform 状态文件,而且还可以与预先存在的状态文件合并。我还没有尝试过,但它可能值得研究。
更新
自 Terraform 0.7 以来,Terraform 现在对使用 import
command line tool 导入预先存在的资源具有一流的支持。
从 0.7.4 开始,这会将预先存在的资源导入状态文件,但不会为资源生成任何配置。当然,如果尝试plan
(或apply
)Terraform 将表明它想要销毁这个孤立的资源。在运行apply
之前,您需要创建配置以匹配资源,然后任何未来的plan
s(和apply
s)都应该显示对资源没有任何更改,并愉快地保留导入的资源。
【讨论】:
谢谢@ydaetskcoR,如果顺利的话,我会自己尝试并在这里更新 虽然terrafroming
缺少很多 AWS 服务更新。与 VPC 配合得很好,这就是我到目前为止所尝试过的【参考方案2】:
使用 Terraforming https://github.com/dtan4/terraforming ,迄今为止它可以生成大多数 *.tfstate 和 *.tf 文件,除了 vpc 对等。
【讨论】:
以上是关于Terraform 初始状态文件创建的主要内容,如果未能解决你的问题,请参考以下文章
如果 Terraform 重新创建在另一个状态中引用的资源怎么办?
将现有 Azure 资源导入本地 Terraform 状态文件