检索api调用后的值-terraform

检索api调用后的值-terraform,terraform,terraform0.12+,Terraform,Terraform0.12+,我一直在尝试使用terraform编写代码,它必须在POST上执行API调用,并且必须在POST上返回值,POST上的返回值我必须能够在代码中的其他地方使用它 读了很多书,我注意到有两种方法 万事达卡RESTAPI 本地Exec和空提供程序 当我们试图在post上获取值时,第一个API也有一些问题,不幸的是,我试图调用的API需要一些输入值来返回输出。如果有人有使用mastercard rest api进行此操作的经验,请告诉我如何操作 我的curl语句如下所示- curl --insecure

我一直在尝试使用terraform编写代码,它必须在POST上执行API调用,并且必须在POST上返回值,POST上的返回值我必须能够在代码中的其他地方使用它

读了很多书,我注意到有两种方法

  • 万事达卡RESTAPI
  • 本地Exec和空提供程序
  • 当我们试图在post上获取值时,第一个API也有一些问题,不幸的是,我试图调用的API需要一些输入值来返回输出。如果有人有使用mastercard rest api进行此操作的经验,请告诉我如何操作

    我的curl语句如下所示-

    curl --insecure -X POST 'https://url.fqdn/get_hostname' --header 'Content-Type: application/json' --header 'Authorization: Basic tokenvalue' -d '{"key": "value","key": "value","key": "value"}'
    
    使用本地exec和空提供程序

    resource "null_resource" "get-hostname" {
    provisioner "local-exec" {
        command = <<EOF
        curl --insecure -X POST 'https://url.fqdn/get_hostname' --header 'Content-Type: application/json' --header 'Authorization: Basic tokenvalue' -d '{"key1": "value1","key2": "value2"}'
        EOF
    }
    
    resource“null\u resource”获取主机名{
    供应人“本地执行官”{
    
    command=您可以将curl的输出重定向到一个文件,并在另一个null_资源块中处理该文件,该资源块显式依赖于编写该文件的资源块。

    如果您从api调用中获得json应答,您可以使用terraform外部数据源并使用jq编写脚本来解析jsonor使用
    jsondecode()
    在TFI中对其进行本机解析也是同样的想法,但我不确定在有许多并行执行的情况下如何处理该文件。每个配置模块应该调用的唯一文件是什么,然后我想使用兰德provider生成不同的文件名。实际上,c4f4t0r的建议不需要输出文件,因为curl可以输出干净的json,请参阅