簡體   English   中英

Terraform - 跨提供者資源配置繼承

[英]Terraform - Cross provider resource config inheritance

我最近才開始弄清楚 Terraform 是如何工作的,但是我有一個非常具體的問題需要解決,到目前為止我還找不到一種簡單的方法來解決這個問題。 我想以這樣一種方式設置 terraform config,即在兩個不同的提供者之間有一個共享的配置部分,在我的例子中是 AWS 和 Docker。 例如,如果我有一個 Postgres 數據庫和一個帶有 nginx 的 VM,我希望有某種“基礎”資源,我可以從更詳細的 Docker 和 AWS 設置中“繼承”這些資源。 我想我可以為此使用變量,但如果我必須向這些容器添加一些配置行,那將不起作用,我將不得不在 2 個模塊配置中添加變量描述和額外的行,分別用於 Docker 和 AWS。 有沒有辦法通過某種繼承來實現“OOP”風格?

有一種方法可以做到這一點,但不是在編程語言類型的思維中。 通過使用資源參數和屬性,您可以在資源之間創建隱式依賴關系,這意味着如果更新了一個資源,則第二個資源也應該反映該更改 [1]。 在 [2] 中可以找到有關如何從創建的資源中引用屬性的示例。

還有一種顯式的依賴類型,它是用depends_on元參數[3]定義的。 有了它,您就是在告訴 Terraform(以及代碼的讀者)在創建定義了depends_on塊的資源之前必須發生一些事情。

如果您想使用模塊,還有一種方法可以使用output值 [4] 在它們之間傳遞信息。 請注意,即使不使用模塊,也可以使用輸出值。

此外,如果您更傾向於使用編程語言處理基礎設施,還有 Terraform CDK [5]。


[1] https://www.terraform.io/language/resources/behavior#resource-dependencies

[2] https://www.terraform.io/language/expressions/references#references-to-resource-attributes

[3] https://www.terraform.io/language/meta-arguments/depends_on

[4] https://www.terraform.io/language/values/outputs

[5] https://www.terraform.io/cdktf

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM