在Terraform中引入新的数据源

在Terraform中引入新的数据源,terraform,Terraform,我对地形是新的,并且一直在试图理解地形的构造。假设我有一个公开REST API的服务,我想调用这些REST API作为terraform脚本的一部分,我需要采取什么步骤 我的理解是,我需要编写一个自定义提供程序,但我无法连接dot关于如何为新提供程序添加新数据源类型的信息 另外,假设我们确实有所需的提供者,那么与我的服务通信将使用什么协议?是HTTP/s吗 还有一点需要注意的是,我的服务目前用于在后端配置存储 terraform的最新版本(>0.9)支持。您不必创建自定义提供程序。您可以调用任何

我对地形是新的,并且一直在试图理解地形的构造。假设我有一个公开REST API的服务,我想调用这些REST API作为terraform脚本的一部分,我需要采取什么步骤

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

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


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

terraform的最新版本(>0.9)支持。您不必创建自定义提供程序。您可以调用任何返回可以用作数据的值的任意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发送给我的脚本的内容与脚本期望的内容之间的交互。它只是无法解析参数,并且拒绝向我提供任何关于程序中所包含内容的反馈

这意味着我们总是可以使用一些外部脚本来完成所有繁重的工作,而我们只是在terraform中调用它,对不对?对于“调用rest api来获取一些任意数据”部分,是的,因为这似乎不是一个有用的答案。如果你想解决OP的问题,请说得更清楚。看起来这是对我上面答案的评论,一个有效的评论。我猜用户没有足够的代表将其作为评论发布。