【问题标题】:Introduce new data source in Terraform在 Terraform 中引入新的数据源
【发布时间】:2017-08-22 08:42:45
【问题描述】:

我是 Terraform 的新手,一直在尝试理解其构造。假设我有一个公开 REST API 的服务,并且我想调用这些 REST API 作为我的 terraform 脚本的一部分,我需要采取哪些步骤?

我的理解是我需要编写一个自定义提供程序,但我无法连接关于如何为新提供程序添加新数据源类型的点。

另外,假设我们确实有所需的提供者,用于与我的服务通信的协议是什么?是 HTTP/s 吗?

还有一点需要注意的是,我的服务目前用于在后端配置存储。

【问题讨论】:

    标签: terraform


    【解决方案1】:

    最新版本的 terraform(我相信 > 0.9)支持 external data sources。您不必创建自定义提供程序。您可以调用任何返回值的任意 shell 或 python 脚本,这些值可以用作数据。

    data "external" "example" {
      program = ["python", "${path.module}/example-data-source.py"]
    
      query = {
        # arbitrary map from strings to strings, passed
        # to the external program as the data query.
        id = "abc123"
      }
    }
    

    在您的情况下,您可以在 bash 脚本中使用简单的 curl 来调用您的端点并将数据作为字符串映射返回到 terraform。

    请注意该页面顶部的警告。

    【讨论】:

    • 这意味着我们总是可以让一些外部脚本完成所有繁重的工作,而我们只是在 terraform 中调用它吧?
    • 对于“调用rest api来获取一些任意数据”部分,是的。
    【解决方案2】:

    这比看起来要困难得多;无法调试 terraform 发送到我的脚本的内容与脚本所期望的内容之间的交互。它只是无法解析参数并拒绝向我提供有关程序中的内容的任何反馈

    【讨论】:

    • DV 因为这似乎不是一个有用的答案。如果您想解决 OP 的问题,请说得更清楚。
    • 看起来这是对我上面答案的评论,这是一个有效的评论。我猜用户没有足够的代表来发表评论。
    猜你喜欢
    • 2021-06-08
    • 2018-01-28
    • 1970-01-01
    • 2019-03-16
    • 2020-12-14
    • 1970-01-01
    • 2019-12-20
    • 2018-09-20
    • 2017-06-11
    相关资源
    最近更新 更多