簡體   English   中英

Terraform GCP 中的文件布局

[英]Terraform File Layout in GCP

我想使用 Terraform 將我的基礎架構遷移到 GCP,但我想知道組織 Terraform 文件的正確方法。 我將有許多 GCP 項目,每個業務應用程序一個(它們彼此之間幾乎沒有關系),每個項目中都包含預生產環境和生產環境。 我基於在線書籍的第一個想法如下:

  • 我創建了兩個 git 存儲庫,一個用於模塊,另一個用於我的基礎設施。 我將它們分開以對我的模塊進行版本控制。

  • 在我的基礎設施 git 存儲庫中,我為每個 GCP 項目創建了一個文件夾,每個文件夾有一個 state 文件用於隔離。

我的想法是對的還是有更好的方法?

提前致謝。

有利也有弊,我可以分享一些最佳實踐。 您可以根據自己的需要進行檢查和修改,而且谷歌對Terraform的支持很少,但不完全。

  • 在 outputs.tf 文件中組織所有輸出並將它們記錄在 README.md 文件中
  • 在 Terraform dosent 執行中將 helper 腳本作為 static 文件包含在單獨的目錄中,它們需要加載到計算引擎實例中,並且需要將它們組織到文件中。
  • 將冗長的文檔從他們的 HCL 中分離出來,並對 Terraform 用來讀取的文件使用文件擴展名。
  • 將模塊發布到適當的注冊表。
  • 對於您需要包含所有者文件的所有模塊。
  • 將每個應用程序和項目的資源放在它們自己的 Terraform 目錄中,並嘗試將所有 Terraform 代碼嵌套在一個目錄下,並將應用程序拆分為特定於環境的子目錄並根據環境使用目錄。
  • 敏感信息可能會出現在 state 文件中,最好使用 Secret Manager。
  • 不要手動修改 Terrafrom state,這會導致基礎設施問題。

我使用 terraform 工作如下:

我為每個模塊創建一個 repo 並記錄它們(在我的例子中,我為此目的在管道中使用 terradoc < https://terraform-docs.io/ > 執行此操作)。

對於產品,我使用兩種方法。

  • 其中之一我允許開發人員(當有知識時)與 .tf 文件交互,在這種情況下,每個環境都有一個 main.tf、variable.tf、provider.tf 和一個 varfile。
  • 另一方面,我創建一個存儲庫只是為了保存基礎設施代碼,這樣,開發人員沒有足夠的知識或興趣與 terraform 交互的項目,不需要與它聯系。

在任何時候,state 總是在一個版本化的桶中,無論是 AWS 還是 GCP,這保證了彈性,將來當涉及到您的基礎設施的 state 時,您不會感到頭疼。

暫無
暫無

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

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