自定义资源由其他资源组成?
Custom Resources Composed of Other Resources?
我目前正在从事一个 Terraform 项目,以自动化 AWS 中的基础设施。由于我们使用的是非常一致的模式,因此我的想法是创建由多个 AWS 资源组成的自定义 Terraform 资源来 DRY 事情。
在自定义 Go Terraform 资源中是否有一种方法可以简单地由多个 AWS 资源组成?我想要一个名为 app_stack
的资源,它由一个自动缩放组、一个弹性负载均衡器和一个 Route 53 名称组成。我希望我的模块只接受最少的参数,这样它就可以使最终用户免受实现细节的影响。
这在 Terraform 中可行吗?
我想你想使用 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 include a much more comprehensive explanation. Here are some example modules github 供参考。
我目前正在从事一个 Terraform 项目,以自动化 AWS 中的基础设施。由于我们使用的是非常一致的模式,因此我的想法是创建由多个 AWS 资源组成的自定义 Terraform 资源来 DRY 事情。
在自定义 Go Terraform 资源中是否有一种方法可以简单地由多个 AWS 资源组成?我想要一个名为 app_stack
的资源,它由一个自动缩放组、一个弹性负载均衡器和一个 Route 53 名称组成。我希望我的模块只接受最少的参数,这样它就可以使最终用户免受实现细节的影响。
这在 Terraform 中可行吗?
我想你想使用 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 include a much more comprehensive explanation. Here are some example modules github 供参考。