【问题标题】:Terraform Provider Schema with dynamic type具有动态类型的 Terraform Provider Schema
【发布时间】:2020-01-17 18:23:18
【问题描述】:

我正在尝试构建一个 Terraform 提供程序,并且外部 API 中有一个字段可以返回一种类型的列表或字符串。为具有这种行为的 API 定义模式的最佳方法是什么。

我阅读了 Terraform Provider 文档:https://www.terraform.io/docs/extend/schemas/schema-types.html,但无法找到解决此问题的方法。

【问题讨论】:

    标签: terraform


    【解决方案1】:

    在撰写本文时,Terraform SDK 无法实现这一点。 SDK 目前支持 Terraform 0.11 和 0.12 的通用功能,以保持 0.11 的兼容性,并且由于动态类型仅在 Terraform 0.12 中引入,因此 SDK 中尚不提供该功能。

    目前提供者的一个常见解决方法是将相关属性定义为字符串并将_json 添加到名称的末尾,然后让提供者将 JSON 编码的值写入属性。然后调用配置可以使用jsondecode 来提取值。

    这里使用 _json 后缀的原因是,它计划在未来的 SDK 修订版中支持这样的动态类型(一旦 Terraform 0.11 兼容性被删除),因此今天使用像 foo_json 这样的名称会留下名称 @987654326 @ 可在从 foo_json 移出的弃用周期中稍后使用。


    在内部,Terraform 0.12 的提供者协议已经通过将特定属性标记为具有动态类型来支持这种可能性。由于上面给出的原因,SDK 只是没有接口来选择它。因此,原则上可以直接针对the raw protocol 编写一个提供程序,该提供程序仅支持 Terraform 0.12 并且可以使用动态类型,但这是一项大量工作,迄今为止在原型和实验之外是前所未有的。我不会推荐它,但我只是为了完整性而提及它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-30
      • 2019-02-26
      • 2021-08-07
      • 2019-04-13
      相关资源
      最近更新 更多