Linux中國

關於配置 Terraform 的五條建議

使用 Terraform 五年的經歷讓我吸取到一些重要經驗。無論團隊大小、項目性質,有五條要點對於配置合乎邏輯且可用的 Terraform 平台至關重要。

1、了解你的目標受眾

這一點似乎顯而易見,但我也見過一些在這方面犯錯的案例。當組織和規劃 Terraform 的相關代碼時,無論是將目錄結構標準化還是確定命名規範,考慮目標受眾是非常重要的。例如:你的團隊是否會使用這些 Terraform 腳本和模塊?你是否會向其他團隊交接工作?你的團隊是否會有新成員加入?你是否正在獨自進行項目開發?你是否會半年或一年後仍然使用這些配置,還是會將它安排給別人?

這類問題會影響某些決策。理想情況下,無論如何都應該有 遠程狀態 Remote State 狀態鎖定 State Locking 兩種狀態。遠程狀態確保你的筆記本電腦不是你的 Terraform 唯一運行的機器,狀態鎖定確保同一時刻只有一個人對基礎設施進行修改操作。

命名規範應該對項目的最終擁有者有意義,而不是只對開發團隊有意義。如果項目會轉交給其他團隊,應該確保他們對命名規範有發言權。如果代碼由非技術的利益相關者或內部安全/ GCR 團隊負責審查,應該確保他們會檢查命名規範。另外,對於資源名稱,為了讓代碼審查人員更仔細地進行檢查,你應該使用資源標籤,把有關的數據分類/隱私需求(高、中、低)標示出來。

2、重用,重用,重用

Terraform 註冊表 為大多數普通用例提供了現成模塊類庫。我已經使用過 VPC 模塊和安全模塊中的大量功能,這些功能只需要提供相關的參數就能使用。使用不同的參數,簡單調用這些模塊對於處理大部分用例已經足夠了。儘可能多地重用這些公共模塊,可以避免大量且重複的編碼、測試、檢查、修復、重構等操作。

我也發現,基於使用或變更的頻率劃分模塊和資源大有好處。例如,只使用一次的基礎設施手腳架,例如 VPC 相關設置、安全模塊、路由表、VPC 端點等,可以放在一起。但是像私有託管域條目、自動伸縮模塊、目標模塊、負載均衡器等,每次部署時都會變化,所以把這些與一次性的基礎設施手腳架分離開來,會令代碼檢查更方便,調試更快速。

3、要明確,而非隱含

Terraform 代碼中有一些常見的模式,它會導致設計中出現錯誤的假設。團隊可以假設用來寫代碼的 Terraform 版本永遠保持不變,外部模塊不會變化,或它們使用的提供者不會變更。當這些外部依賴不可避免地發生變化時,就會導致一些難以發現的問題。

無論何處(包括主要的 Terraform 組、提供者組、功能模塊組)都要確保定義是明確的。事先定義版本,可以確保依賴庫是固定的,因此你可以在討論、審查、測試後,明明白白地更新依賴關係。

4、自動化每一處,包括筆記本電腦、共享虛擬機、CI/CD。

在部署的各個階段使用自動化方法,可以避免可能發生的問題。

在你提交代碼前,使用 Git 預提交鉤子 運行 terraform fmtterraform validate。預提交鉤子的作用是確保你的代碼滿足最低程度的格式和語法正確。把這個預提交文件檢入到倉庫,對你的團隊成員都有好處。項目的第一步就進行質量控制相關的操作,它雖然表面上是小事一樁,但也很重要,能為項目節省大量時間。

一切現代化部署工具都有 CI 流程。當你向原始倉庫推送代碼時,可以使用它來運行 SAST 和單元測試工具。我寫過一篇 博客,是關於使用 Checkov 測試 Terraform 代碼的安全性和合規性,並為組織特定的慣例創建自定義檢查。把這些單元測試工具加入到你的 CI 管道,可以改進代碼質量和健壯性。

5、寫個好的 README.md 文件

我們都認為 Terraform 代碼是自文檔化的。的確如此,但是只有當未來的團隊已經了解你的公司的命名規範、開發指南、機密通信、圈內笑話,以及你的倉庫內除有效的 Terraform 代碼之外其他所有東西,才會如此。維護 README.md 文件是個好習慣,它能節省大量時間,而且團隊成員要為自己向 README 文件提交的任何內容負責,這樣也就確保團隊成員的忠誠度。

你的 README 文件至少應該包含在你的工作環境下(Linux、 Windows、Mac 等等)初始化 Terraform 環境的步驟,包括 Terraform 的版本信息。它應當確定需要的依賴庫(Checkov、 TerraGrunt 及其他依賴)和其版本,以及團隊使用的方便的 Linux 別名(例如有人喜歡將 terraform fmt 簡寫為 tff)。最重要的是,需要確定分支和 PR 審核策略和流程、命名規範和資源標籤的相關標準。

README 文件需要通過這樣的檢驗:如果團隊有新成員加入,能否告訴他們做什麼以及如何正確地完成工作?如果不能,在後續的幾個月內,你將面對的是無休止的標準和流程討論會議。

結束語

這些就是我使用 Terraform 多年後,認為需要傳授給大家的五條有用的建議。也歡迎你分享自己的最佳實踐。

via: https://opensource.com/article/21/8/terraform-tips

作者:Ayush Sharma 選題:lujun9972 譯者:cool-summer-021 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的電子郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國

    Linux中國

    DevOps 將去向何方?

    微軟、谷歌、亞馬遜、IBM 和甲骨文如今都在關注云上的 DevOps。這些大公司正在給企業提供 IT 自動化的服務。然而,DevOps 仍然在持續的演進中。DevSecOps、AIOps 和 NoOps 正在成為下一個流行詞。