使用现有生产资源进行Terraform

时间:2017-12-27 18:27:48

标签: amazon-web-services terraform infrastructure

我是Terraform的新手,我想最终拥有一个Terraform模板来生成我的生产资源,这样我就可以轻松部署到多个区域并进行灾难恢复。如果我的AWS上的资源(EC2,S3,VPC等)已经部署,我该怎么做?

3 个答案:

答案 0 :(得分:2)

您可以使用terraform import功能。以下是文档的链接:https://www.terraform.io/docs/import/index.html

然而,它无法为您生成配置。您必须构建配置并导入资源状态。

  

Terraform导入的当前实现只能将资源导入该状态。它不会生成配置。 Terraform的未来版本也将生成配置。

您可以逐步进行,逐个开始编写资源配置。

例如:

  1. 为VPC编写配置。
  2. 导入VPC状态
  3. 为EC2实例编写配置。
  4. 导入EC2状态
  5. 成功导入资源后。您可以使用terraform plan命令确保状态正确匹配。

    请记住使用terraform模块(https://www.terraform.io/docs/modules/create.html)来更好地构建代码,以便您可以将它们重用于其他区域和环境。

    这是一篇描述使用多区域部署的terraform的方法的文章。 https://medium.com/@ctindel/multi-region-aws-app-deployments-with-terraform-modules-859c9ecb64f4

答案 1 :(得分:0)

我认为在这种情况下你应该尝试考虑“Terraforming”。它将以terraform风格导出您当前的aws基础设施。

  

参考:http://terraforming.dtan4.net/

     

Github:https://github.com/dtan4/terraforming

您也可以考虑使用terraform生产就绪模块的分段堆栈,您可以按照自己的方式使用它。

  

https://github.com/segmentio/stack

答案 2 :(得分:0)

Google有一个名为terraformer的开源工具,用于将现有的AWS堆栈反向地形化为tftfstate文件。

它们显然还支持GCP,K8,Openstack和其他平台。

AWS示例用法:

terraformer import aws --resources=vpc,subnet --connect=true --regions=eu-west-1 --profile=prod

terraformer import aws --resources=vpc,subnet --filter=aws_vpc=vpc_id1:vpc_id2:vpc_id3 --regions=eu-west-1