Terraform Enterprise 作為本地佈署的 Terraform Cloud,提供私有化、資源不受限的 Terraform 執行環境,強化企業級架構,例如稽核日誌和 SAML 單一登入。其核心功能包含 Sentinel 策略引擎,用於驗證基礎設施組態是否符合規範;私有 Registry,方便團隊內部分享模組和提供者;以及 Workspaces,用於組織組態、變數、狀態和日誌。與開源版本相比,Terraform Enterprise 的 Workspaces 不僅管理狀態,還整合版本控制系統、儲存變數和日誌,提供更全面的基礎設施管理方案。此外,Terraform Enterprise/Cloud 提供遠端操作、組織管理、成本估算和 API 整合等功能,簡化協作流程並提升效率。理解這些功能的差異和應用場景,有助於企業選擇合適的 Terraform 方案,並有效管理基礎設施。
瞭解 Terraform 企業級功能
Terraform Enterprise 是 Terraform Cloud 的本地佈署版本,為企業提供了一個私有的 Terraform Cloud 應使用案例項,沒有資源限制,並具備額外的企業級架構功能,如稽核日誌和 SAML 單一登入。Terraform Cloud 是 Terraform Enterprise 的雲端託管版本,具有許多相同的企業級架構功能。在大多數情況下,Terraform Enterprise 和 Terraform Cloud 可以被視為同一產品。
Sentinel、Registry 和 Workspaces 的優勢
Sentinel
Sentinel 是一種語言和框架,用於制定策略,嵌入現有軟體中,以實作細粒度的、根據邏輯的策略決策。策略描述了在什麼情況下允許某些行為。Sentinel 是 HashiCorp Consul、Nomad、Terraform 和 Vault 的企業級功能。
Terraform Enterprise 使用 Sentinel 來強制執行對 Terraform 組態、狀態和計劃的策略。在 terraform plan 之後和 terraform apply 之前,Sentinel 與 Terraform 的整合在 Terraform Cloud 中執行。策略可以存取建立的計劃、計劃時的狀態和組態。
Sentinel 策略是對 Terraform 執行強制執行的規則,以驗證計劃和相應的資源是否遵循公司策略。一旦將策略新增到組織中,它就會在所有執行中強制執行。
策略檢查將在計劃成功執行後立即進行。如果計劃失敗,則不會執行策略檢查。策略檢查使用產生的 tfplan 檔案、模擬的 apply 物件、狀態和組態來驗證每個策略中的規則。
簡而言之,Sentinel 策略可以驗證 terraform plan 結果是否符合公司要求(在 Sentinel 策略中定義),如果不符合,則會阻止建立這些資源(透過 terraform apply)。
Registry
Terraform 有一個公共登入檔,用於 Terraform 模組和提供者,位於 https://registry.terraform.io。一些組織可能不想使用公共登入檔來存放他們的模組和外掛程式。Terraform Cloud 提供了一個私有註冊表功能,允許組織中的團隊私下共用模組和提供者外掛程式,包括版本控制、組態設計和搜尋功能。
組織可以透過選擇使用 Terraform Enterprise(本地託管版本的 Terraform Cloud)來進一步私有化他們的登入檔。在這種情況下,私有登入檔託管在公司擁有的硬體上,不會暴露在網際網路上。
Workspaces
Terraform Cloud 中的 Workspaces 與 Terraform CLI 中的 Workspaces 有所不同。在 Terraform CLI 中,Workspaces 用於使用相同的組態管理多個環境,但每個環境都有一個單獨的狀態檔案。在 Terraform Cloud 中,Workspaces 用於組織基礎設施組態,包括組態、變數、狀態和日誌。
開源軟體(OSS)與 Terraform Enterprise(TFE)Workspaces 的區別
在探討 Terraform Cloud 和 Terraform CLI 中 Workspaces 的區別之前,讓我們花點時間討論一下 Terraform Cloud 和 OSS 之間的區別。Terraform 開源軟體是免費的、開源的 CLI,可以下載並在本地系統上執行。
在 2019 年宣佈 Terraform Cloud 之前,HashiCorp 有一個名為 Terraform Enterprise 的託管服務。它建立在 Terraform OSS 之上,同時增加了多項增強功能和額外功能。Terraform Enterprise 也可以在本地伺服器上執行,這被稱為私有 Terraform Enterprise。
託管版本的 Terraform Enterprise 被重新命名為 Terraform Cloud,同時進行了多項授權更新,並為五人或以下的團隊提供了免費版本。私有 Terraform Enterprise 被重新命名為 Terraform Enterprise,並繼續在本地執行。
- Terraform OSS:免費和開源的 CLI
- Terraform Cloud:託管的 Terraform for Teams(前身為 Terraform Enterprise)
- Terraform Enterprise:本地佈署的 Terraform for Teams(前身為私有 Terraform Enterprise)
開源軟體(OSS)中的 Workspaces
在 Terraform OSS 中,Workspaces 用於使用相同的組態管理多個環境,但每個環境都有一個單獨的狀態檔案。Workspaces 在 Terraform OSS 中專門用於狀態管理,而不涉及組態的其他方面,如提交的變數值或先前操作的日誌。
Terraform Cloud 中的 Workspaces
Terraform Cloud 中的 Workspaces 用於組織基礎設施組態,包括組態、變數、狀態和日誌。這與 Terraform OSS 中的 Workspaces 有所不同。
重點整理
- Sentinel 是一種策略引擎,可以與多個 HashiCorp 產品(包括 Terraform)一起使用。
- Terraform Cloud 包括私有登入檔和用於基礎設施組態的 Workspaces。
補充資訊
- https://www.terraform.io/docs/cloud/sentinel/index.html
- https://www.terraform.io/docs/registry/index.html
- https://www.terraform.io/docs/cloud/workspaces/index.html
Terraform Enterprise 功能詳解
Terraform Enterprise 是 HashiCorp 提供的一項託管服務,旨在簡化使用 Terraform 時的協作流程。相較於本地執行 Terraform,Terraform Enterprise 提供了一致、可靠且具協作性的託管環境,不僅僅是遠端執行 Terraform,還包含了額外的功能,如分享狀態、秘密資料、存取控制、私有登入檔等。
Terraform Cloud 工作空間
Terraform Cloud 對工作空間的使用採取了不同的方法。除了狀態管理元件外,還增加了一些額外的功能。Terraform Cloud 與 GitHub 和 GitLab 等版本控制系統(VCS)整合,工作空間指向 VCS 儲存函式庫以取得其組態。變數值、狀態、秘密和憑證也作為工作空間設定的一部分儲存。
一個 Terraform Cloud 工作空間包含以下內容:
- Terraform 組態(通常從 VCS 儲存函式庫檢索,有時直接上傳)
- 組態使用的變數值
- 以敏感變數形式儲存的憑證和秘密
- 受管理資源的持久儲存狀態
- 歷史狀態和執行日誌
Terraform Cloud 的主要功能
Terraform Cloud 提供了一系列功能,以簡化 Terraform 的使用和協作:
- 工作空間:與 VCS 相連,包括值、持久狀態和歷史日誌
- 版本控制系統(VCS)整合:與多個流行的 VCS 解決方案整合,允許自動執行 Terraform,根據 pull requests 規劃執行,並將模組釋出到私有登入檔
- 私有模組登入檔:用於在組織內私密、安全地分享模組
- 遠端操作:使用受管理的、一次性的虛擬機器來執行 Terraform 命令,提供 Sentinel 策略執行和成本估算等高階功能
- 組織:透過使用者、群組和組織來管理存取控制
- Sentinel:一種語言和框架,用於實作細粒度的、根據邏輯的策略決策
- 成本估算:估算由組態所提供的資源成本
- API:Terraform Cloud 的部分功能可透過 API 使用
- ServiceNow 整合:為 Terraform Enterprise 客戶提供與 ServiceNow 的整合
重點整理
Terraform Cloud 是一個託管服務,擴充套件和增強了 Terraform OSS 的功能。其中最重要的新增功能包括工作空間、VCS 整合、私有模組登入檔和 Sentinel。
附錄:額外資源
在深入研究、閱讀和學習 Terraform 的過程中,我們彙整了一份實用的額外資源清單,幫助讀者快速掌握 Terraform 的關鍵概念和實務應用。
文章
這些文章闡明瞭重要的概念,並展示了使用 Terraform 的真實案例。
- 全面掌握 Terraform 的⁹⁰
- 7 個正確啟動 Terraform 專案的技巧⁹¹
- Terraform 最佳實踐⁹²
- Terraform 推薦實踐⁹³
- 如何使用 Terraform 模組建立可重複使用的基礎架構⁹⁴
- 自動化執行 Terraform⁹⁵
- Terraform Enterprise - 儲存函式庫結構⁹⁶
- 在 Azure 上使用 Terraform 的好處⁹⁷
書籍
這些書籍對學習 Terraform 非常有幫助。
《Terraform: Up & Running》⁹⁸(註:該書已於 2019 年 10 月推出第二版⁹⁹)
《The Terraform Book》¹⁰⁰
Terraform 入門¹⁰¹
Terraform 深度解析¹⁰²
在 Microsoft Azure 上實施 Terraform¹⁰³
實作實驗室
透過實作實驗室,可以鞏固對 Terraform 的理解。
- Azure Citadel 的 Terraform 實作實驗室¹⁰⁴
- HashiCorp 的 Learn Terraform 平台¹⁰⁵
影片
- 使用 Terraform 進化基礎架構¹⁰⁶
- 快樂地使用 Terraform:真實世界的經驗和最佳實踐¹⁰⁷
- HashiCorp Terraform 的採用歷程:典型案例¹⁰⁸
- HashiConf 2018 第二天的主題演講:Terraform 正在改變世界¹⁰⁙
- 使用 Terraform 擴充套件:從新創到企業的旅程¹¹⁰
- 編寫超過 30 萬行基礎架構程式碼的 5 個經驗教訓¹¹¹
補充說明:
本附錄彙整的資源旨在提供讀者更深入的學習途徑和實務參考,無論是文章、書籍、課程還是影片,都能幫助讀者更好地掌握 Terraform 的使用和最佳實踐。這些資源由作者親自篩選,確保其對讀者的學習旅程有所助益。
補充資源說明:
在學習過程中,適時參考外部資源能夠擴充套件知識面。上述資源清單結合了線上課程、實作實驗室和影片,旨在為讀者提供多元化的學習選擇,以滿足不同學習需求。透過這些資源,讀者可以更全面地理解和應用 Terraform。