【问题标题】:Custom Resources Composed of Other Resources?自定义资源由其他资源组成?
【发布时间】:2017-03-17 16:31:15
【问题描述】:

我目前正在开发一个 Terraform 项目,以自动化 AWS 中的基础设施。由于我们使用的是相当一致的模式,我的想法是创建自定义 Terraform 资源,这些资源由多个 AWS 资源组成以干燥事物。

在自定义 Go Terraform 资源中是否有一种方法,这些资源仅由多个 AWS 资源组成?我想要一个名为 app_stack 的资源,它由一个自动缩放组、一个弹性负载均衡器和一个 Route 53 名称组成。我希望我的模块只接受最少的参数,这样它就可以保护最终用户免受实现细节的影响。

这在 Terraform 中可行吗?

【问题讨论】:

    标签: terraform


    【解决方案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供参考。

    【讨论】:

    • 为了将来参考,请注意 Terraform HCL 语言有很多限制,one related to the count variable,不支持任何类型的条件逻辑等等。用 Go 写东西似乎是能够克服这个限制,但它当然需要更多的工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-17
    • 2011-07-05
    • 2011-03-18
    • 2015-11-04
    • 1970-01-01
    • 1970-01-01
    • 2017-05-17
    相关资源
    最近更新 更多