2017-07-18 37 views
1

我是Terraform的新手,一直試圖理解相同的構造。比方說,我有一個公開REST API的服務,我想將這些REST API作爲我的terraform腳本的一部分,我需要採取哪些步驟?在Terraform中引入新的數據源

我的理解是,我需要編寫一個自定義提供程序,但我無法連接關於如何爲新提供程序添加新數據源類型的點。

此外,假設我們有必需的提供者,那麼將用於與我的服務進行通信的協議是什麼?它是HTTP/s嗎?

還有一點要注意的是,我的服務當前用於在後端配置存儲。

回答

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腳本調用您的端點,並返回數據對terraform作爲地圖的字符串。

請注意該頁面頂部的警告。

+0

這將意味着,我們總能有一些腳本外部做所有繁重的任務,而我們只是把它在terraform吧? – Rakshith

+0

爲「呼叫REST API來獲取一些任意的數據」的一部分,是的。 – RaGe

-1

這看起來要困難得多;調試terraform發送到我的腳本和腳本期望的內容之間的交互是不可能的。它只是無法解析的參數,並拒絕向我提供任何反饋,什麼是進入程序

+0

DV,因爲這似乎不是一個有用的答案。如果你正在試圖解決OP的問題,請使其更加清晰。 –

+0

看起來這是爲了評論我上面的答案,這是一個有效的答案。我想用戶沒有足夠的代表將其作爲評論發佈。 – RaGe