有没有办法从现有的基础设施创建 terraform 状态文件。例如,AWS 账户附带一些已经到位的服务(例如:默认 VPC)。
但是 terraform 似乎只知道它创建的资源。所以,
- 将现有 AWS 基础设施迁移到 Terraform 代码的最佳方法是什么
- 是否可以手动添加资源并手动修改状态文件(不良影响?)
更新
Terraform0.7.0
支持导入单个资源。
有没有办法从现有的基础设施创建 terraform 状态文件。例如,AWS 账户附带一些已经到位的服务(例如:默认 VPC)。
但是 terraform 似乎只知道它创建的资源。所以,
Terraform0.7.0
支持导入单个资源。
对于相对较小的事情,我在手动修改状态文件以添加存根资源方面取得了一些成功,然后我在顶部继续使用 Terraform(特别是使用预先存在的 VPC 和子网,然后使用 Terraform 应用安全组等)。
对于更复杂的事情,有一个名为的非官方工具terraforming
,我听说它非常擅长生成 Terraform 状态文件,而且还可以与预先存在的状态文件合并。我没有尝试过,但它可能值得研究。
从Terraform 0.7开始,Terraform 现在对使用import
命令行工具导入预先存在的资源具有一流的支持。
从 0.7.4 开始,这会将预先存在的资源导入状态文件,但不会为资源生成任何配置。当然,如果然后尝试一个plan
(或一个apply
)Terraform 将表明它想要销毁这个孤立的资源。在运行之前,apply
您需要创建配置以匹配资源,然后任何未来plan
的 s(和apply
s)应该显示对资源没有更改并愉快地保留导入的资源。
使用 Terraforming https://github.com/dtan4/terraforming,迄今为止它可以生成大多数 *.tfstate 和 *.tf 文件,除了 vpc 对等。