在Terraform中引入新的数据源

时间:2017-07-18 17:17:12

标签: terraform

我是Terraform的新手并且一直试图理解它的构造。让我们说我有一个公开REST API的服务,我想把这些REST API称为我的terraform脚本的一部分,我需要采取哪些步骤?

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

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

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

2 个答案:

答案 0 :(得分:2)

最新版本的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。

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

答案 1 :(得分:-1)

这比出现的要困难得多;调试terraform发送到我的脚本和脚本期望的内容之间的交互是不可能的。它只是无法解析论点,并拒绝向我提供有关进入程序的内容的任何反馈