【问题标题】:Custom resource for existing Terraform provider?现有 Terraform 提供者的自定义资源?
【发布时间】:2018-11-11 23:32:12
【问题描述】:

我一直在为 AWS 编写一个自定义资源,它以一种有用的方式结合了其他资源。 (使用 Terraform 模块有效地实现太复杂了。)

文档(以Plugins page 开头)概述了如何从头开始创建全新的资源。但是,是否可以将我的自定义资源“附加”到 AWS 提供商?这将使我能够:

  • 命名我的资源,例如aws_foo 而不是 awscontrib_foo
  • 大概是访问已经为该提供商定义的 AWS 凭证

【问题讨论】:

  • 您可以将其 PR 给 AWS 提供商。
  • 这是有道理的 :) 我仍然对 Terraform 是否有能力用新的资源类型“增强”现有提供者感兴趣。第一,这意味着如果terraform-provider-aws 维护者拒绝了 PR,我的工作不会白费,第二,这看起来是一个有趣的问题。另外,plugin development page 的第一段似乎暗示这是可能的
  • 当然,但是想象一下随着提供者和 Terraform 的变化,该代码的维护和维护。如果你公关它,那么你知道它基本上可以永远工作,而你几乎不需要付出任何努力。这更多的是解决您继承的问题,而不是我知道的您的具体问题。
  • 考虑到 terraform 插件文档如何说如果 "You want to add a new resource type to an existing provider" 使用插件,这个问题应该有答案。但我还没有找到如何:-/我猜他们的意思是通过分叉现有的提供者......?
  • @RyanKennedy 我可以建议将Pulumi 用于更高级的“模块”。 Pulumi uses the Terraform providers underneath.

标签: go terraform


【解决方案1】:

是的,这里概述了该过程

https://github.com/hashicorp/terraform#developing-terraform

您的自定义 terraform 可以在您自己的 AWS 插件版本中

【讨论】:

    【解决方案2】:

    您可以使用以下提供程序对 AWS CloudFormation 中的自定义资源执行完全相同的操作。

    https://github.com/mobfox/terraform-provider-multiverse

    您甚至可以使用 AWS Lambda 并使用您喜欢的任何语言来管理您的资源,它还保留您的资源状态,因此您也可以删除、读取、更新它们。它创建一个资源,所以它不像外部数据

    【讨论】:

      猜你喜欢
      • 2018-07-30
      • 2020-07-08
      • 1970-01-01
      • 2020-09-27
      • 2021-07-17
      • 2021-12-28
      • 2018-03-02
      • 2021-03-14
      • 1970-01-01
      相关资源
      最近更新 更多