我目前正在开发一个Terraform项目,以自动化AWS中的基础架构。由于我们使用的是非常一致的模式,我的想法是创建自定义的Terraform资源,这些资源由多个AWS资源组成,可以解决问题。
在自定义Go Terraform资源中是否有一种方法可以简单地由多个AWS资源组成?我想要一个名为app_stack
的资源,它由自动缩放组,弹性负载均衡器和Route 53名称组成。我希望我的模块只接受最少的参数,以便最终用户屏蔽实现细节。
Terraform有可能吗?
答案 0 :(得分:1)
我想你想使用Terraform module。模块是作为一个组进行管理的资源集合。
您可以公开模块运行所需的任何变量,因此在您的情况下,DNS名称,ASG中需要的实例数等等。然后,当您将其包含在terraform配置中时,您可以指定块,例如:
module "myapp" {
source = "./app_stack"
dns_name = "myapp.example.com"
instances = 5
}
module "meteordemo" {
source = "./app_stack"
dns_name = "meteor.example.com"
instances = 1
}
The docs包含更全面的解释。以下是github上的一些example modules供参考。