我是Terraform的新手并且一直试图理解它的构造。让我们说我有一个公开REST API的服务,我想把这些REST API称为我的terraform脚本的一部分,我需要采取哪些步骤?
我的理解是我需要编写自定义提供程序,但我无法连接有关如何为新提供程序添加新数据源类型的点。
另外,假设我们确实拥有所需的提供程序,那么用于与我的服务通信的协议是什么?是HTTP / s吗?
还有一点需要注意,我的服务目前用于配置后端的存储。
答案 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发送到我的脚本和脚本期望的内容之间的交互是不可能的。它只是无法解析论点,并拒绝向我提供有关进入程序的内容的任何反馈