fbpx

Terraform-基礎架構即代碼(IaC)建立雲端架構

Terraform

Tarraform 高效配置和部署雲端資源

HashiCorp 提供的開源工具-Terraform 是一種基礎架構即代碼(IaC)解決方案。它旨在幫助開發者使用程式碼配置雲端資源。

Terraform 透過 CI/CD 流程,讓開發者追蹤基礎架構的變動,並透過 GitOps 將版本控制、自動化測試、監控和日誌管理工具整合至工作流程中,以確保部署流程具有高度一致性和重複使用性。

在混合雲端架構中,Terraform 提供模組化、可重用性強且部署一致性高的解決方案,它彈性的跨平台部署方案能支援包括 AWS、Google Cloud 和 Azure 等眾多主流雲端環境,確保企業在不同環境中維持一致、標準化的工作流程,從而降低對特定供應商的過度依賴。

另外,Terraform 的開源特色確保它與各大雲端平台間的相容性。透過提供相應的外掛和技術支援,Terraform 能被無縫整合至各種環境。

Terraform

FEATURE

Terraform 支援主流雲端平台,避免過度依賴
特定供應商

FEATURE

透過 HCL 建立設定檔模板,確保 ECS 資源預配、配置和部署過程的一致性和可靠性

FEATURE

版本化架構變更策略,當問題發生時,使用者能回滾到前一版

FEATURE

將常用設定與資源整合成模組,利用輸入/輸出配置變數

FEATURE

整合多種安控技術、持續監控並主動回應,確保資料、系統和網路得到保障

探索 Terraform

Terraform 產品資訊

掌握產品新功能、研討會等最新動態!

Terraform 成功案例

快來看看哪些企業利用 Terraform 獲得成功,您也可以!

Terraform 的工作原理

Terraform 允許開發者透過設定檔和版本控制定義和管理基礎架構。當收到與部署、伺服器操作、資料庫或負載平衡器相關的設定檔時,Terraform 會將它評估、解析,並轉換為相應的 API 請求,確保設定檔被正確的傳送至相應的雲端平台。另外,Terraform 的開源性讓 DevOps 可以開發新外掛或更新現有的外掛版本,從而優化 Terraform 效能。

Terraform workflow

組成 Terraform 的關鍵元件

Terraform Core

Terraform Core 是用於讀取和解析資源計畫、資源圖表、狀態管理和文件配置的核心元件。它是 Go 語言寫成的執行檔,每個執行檔都能作為命令列介面(CLI),也能執行遠程程式呼叫(RPC)與外掛進行通訊。

terraform Plugins

Terraform 外掛主要用於定義和驗證特定雲端平台(如 AWS、Azure、Google Cloud )。除了確保資源的正確性,Terraform 外掛也能啟動 API 呼叫工具。這些外掛同樣由 Go 語言寫成,使用者可依照需求,將其用於特定的雲服務或作為配置工具。(配置工具專為下達運算資源指令而設)

Terraform Features

Terraform 的工作流程

Terraform Workflow

1.採用

採用 HCL(HashiCorp Configuration Language)更輕鬆的定義 IaC,並且允許在各種雲端環境中配置資源。

2.建置

透過建立自動化的基礎架構流程,IT 人員能整合不同雲端運算資源,同時利用開發團隊提供的 IaC 配置模板,確保快速、一致且安全的部署。

3.標準化

透過建立符合安全、合規性和成本控管的安控機制,確保系統在這些關鍵領域中達到嚴格標準。

4.擴展

藉由 Self-service IaC,開發者能夠將自動化流程擴展至整個團隊,同時確保版本控制(VCS)、IT 服務管理(ITSM)和 CI/CD 的深度整合。

為什麼要使用 Terraform?

使用 Terraform 的優勢如下

  • 代碼化的基礎架構

採用名為 HCL(HashiCorp Configuration Language)的組態語言來描述基礎架構,Terraform HCL 讓開發者更輕鬆地的宣告資源 (Resource),並將一系列的資源包裝成模組 (Module),藉此設計更龐大的架構。

  • 網路軟體化
使用者能透過程式碼管理和配置網路資源。(如子網路、負載平衡器和安全群組)
  • 資源和狀態管理

使用者能將現有基礎架構整合至 Terraform 的狀態管理系統,確保資源與設定檔中描述的配置一致。此外,Terraform 的狀態鎖定機制只允許一位使用者對基礎架構進行更改,避免多人同時更改造成錯誤。

Terraform cloud

導入 Terraform Iac 策略的三個階段

Terraform 的 IaC 解決方案分為 3 個階段:首先,透過 Iac 將工作流程最佳化,讓開發者在雲端架構上安全地配置基礎架構。再來,隨著技術與經驗累積,開發者能為團隊建立標準化工作流程,確保 CI/CD 的流暢性。最後,為了因應不斷增加的需求,terraform 提供自助式的擴展能力,讓開發者能隨時配置資源,從而達到最佳的性能和運作透明度。

階段一-透過 Iac 將工作流程最佳化

Terraform Adopt
  • 遠程狀態儲存

結合靜態加密和動態更新,持續優化 Terraform 狀態檔。

  • 整合版本控制(VCS)

當有人將 Pull Request 合併到主分支時,使用者可以手動批准或自動執行這些更動。

  • 客製化的工作空間權限

為管理員、DevOps 人員和使用 Terraform 資源的開發者設定不同的權限層級。

  • 彈性的工作流程

透過命令列介面(CLI)、版本控制或 API 運行 Terraform。

  • 共同變更基礎架構

在調整任何基礎架構前,對基礎架構進行審查並評估執行計畫,從而降低風險。

  • 日誌稽查

透過 API 將審計日誌(audit log)匯出至外部系統或 Splunk 以實現更進階的資料分析。

階段二-為團隊建立標準化最佳工作流程

terraform standarize
  • 私有模組倉儲(Private module registry)

建立基礎架構藍圖模組,以促進團隊建立最佳工作流程並將其重複用於其他專案。

  • Policy as code

使用 Sentinel 或第三方工具為 Terraform 建立符合資安和合規的安控機制。

  • 漂移偵測功能(Drift detection)
當基礎架構發生更動時,Terraform 會立即發出警告,確保基礎架構穩定一致。
  • 彈性的整合方案

在 Terraform 工作流程中整合數百種第三方工具。

階段三-自助式擴展讓可見度與效能最佳化

Terraform scale
  • 自助服務

讓終端使用者利用無代碼模組和 ServiceNow 配置基礎架構。

  • API 與 CI/CD 整合

將Terraform 的運行流程整合至 CI/CD 流程中,以提升自動化效能。

  • 並行操作

將並行操作導入工作流程以提升團隊效率。 

  • 串接私有資料中心

在防火牆後方運行 Terraform 或串接其他私人資源。

  • 通知功能

透過電子郵件、Slack 或 webhooks 傳送 Terraform 的運行狀態資訊。

  • 基礎架構健檢

完成基礎架構配置後,持續追蹤其健康狀態。

 

Terraform 的 4 個使用情境

情境 1-基礎架構數位轉型

情境說明

過往企業採用傳統、封閉的地端架構來滿足業務需求。這些地端架構雖然穩定且安全,但卻無法滿足快速變化的需求以及爆炸成長的資料量,因此將基礎架構數位化成了企業的首要之務。然而基礎架構轉型對 IT 人員也是一大挑戰,原因如下:

  • IT 人員困於緩慢且易出錯的手動作業流程。
  • 開發者受限於繁瑣的工作流程和冗長的工單系統。
  • 當策略在不同環境中缺乏一致性時,可能會降低生產效率,甚至對資安構成隱患。
  • 儘管自動化被視為解決方案中的一部分,但在多數情況下,基礎架構自動化仍然難以實現規模化和可重複性。
透過 Terraform 的 Policy As Code 框架,開發者能自動進行資源配置和安控管理。這意味所有基礎架構和政策都會被編碼、共享和管理,並在所有基礎架構中保持一致的工作流程。透過 Terraform,使用者能克服跨公有雲、私有資料中心及第三方服務在資源配置、合規性及管理上的挑戰。

Terraform 促進一致、自動的工作流程

基礎架構配置自動化

寫入、共享、管理、自動化

團隊透過可重複使用的工作流程編寫、共享、管理和自動化任何架構。

  • 構建:透過整合 Iac 與 VCS,開發者能夠追蹤配置狀態和管控版本。
  • 協同作業:營運團隊能夠創建、共享、升級和拆除基礎架構。
  • 重複使用:為開發者提供自助式 IT 服務,讓他們在工作流程中配置所需的基礎架構。
Terraform Plan and Apply
Infra management system

基礎架構管理系統

可見性、安全性、合規性和成本控管

利用 HashiCorp  Sentinel(HashiCorp 的 PaC 框架)對基礎架構的建構類型、用途及使用團隊進行嚴格的政策監管。

由於 Policy 能透過 Sentinel 寫成程式碼,這促進了DevSecOps 團隊間的協作,並加速政策的調整和執行,同時避免因人工審查造成延遲。

  • 單一且易於整合的設定,用於管理公有/私有雲和地端資料庫。
  • 易於整合的雲端產品,避免過度依賴特定供應商。
  • 一致的工作流程有助於組織導入新產品技術、支援新業務目標並確保各類雲端架構都受到相同的管理與監管。
  • 統一工作流程可用於維護、管理和稽查各類型的雲端基礎架構。
 

雲端自動化基礎架構系統

Terraform 輕鬆整合現有技術

利用自助式 IT ,開發者不需要基礎架構團隊就能根據自身需求進行配置,這簡化了流程,也縮短了應用程式從開發到上線的時間。

  • Terraform Registry

Terraform Registry 提供一系列預先建構的基礎架構模組,讓開發者迅速建立和部署應用程式,而不需要從頭開始。

  • Sentinel 政策即代碼

Sentinel 會在開發者進行配置或更動基礎架構前,自動執政策。這種機制能維持架構的穩定性,也能避免意外配置所導致損失。

cloud infra automation

基礎架構數位化帶來的效益

1.提高生產效率

簡化手動流程,大幅降低創建、共享、管理和配置雲端基礎架構所需的時間。

2.降低風險

強化資安防禦機制(Security Posture),降低合規不符的情況,同時維持基礎架構運行的一致性。

3.成本控管

透過精確管理閒置、孤立且過度配置的雲端資源,從而節省高達 40 % 的雲端開銷。

情境 2 -控管雲端開銷

情境說明

隨著越來越多企業採用雲端架構,如何明智管理開銷已成為企業的核心策略。這些高昂的雲端成本往往源於閒置資源、未充分利用的設施,以及對雲端技術的認知不足。透過 Terraform 的自動化工作流程,開發者能高效管理和配置雲端資源,確保團隊在配置時能嚴格遵循企業政策。企業也能透過 Terraform 的標準化策略處理機密管理、加密和服務網路,從而避免資源過度分散。

Terraform 控制成本,降低開銷

使用 Terraform 控管成本

透過 Terraform ,企業能制定以成本為核心的政策,自動清除閒置的運算資源,從而避免超額配置(Over Provisioning)。透過稽查日誌,使用者能更直觀地監控並進行資源的調整與優化。

  • 降低至少 20% 的雲端開銷,消除多餘的運算資源。
  • Terraform 可以在配置前預估資源費用,協助企業編列合理的預算,避免因未預期的雲端開銷而造成負擔。
  • 在進行更改前,開發者可以透過 terraform plan 來查看哪些更動會影響到他們現有的基礎架構。這項「預覽」功能幫助開發者避免因配置錯誤或過度部署所衍伸的問題。
Terraform cost automation
Terraform Standarize and automate

自動化與標準化提高生產力

開發者可以從現有的 VCS 、CI/CD 和 ITSM 工作流程中,運用已認證、具有高度重複使用價值的基礎架構模組進行配置。

  • VCS 整合:使開發者在 CLI 工作流程中靈活配置。
  • CI/CD 整合:允許團隊在 DevOps 流程中高效配置。
  • 模組的組合、協同、重用:透過 Terraform Registry ,開發者能夠將特定模組視作最佳實踐範本。這不僅保障了基礎架構代碼的一致性,還大幅度提升重複使用性,並進一步確保整體工作流程效率。

開銷控管帶來的效益

1.提高營運效率和控制成本

透過消除閒置和孤立的運算資源,從而避免資源過度分配。

2.透過自動化和標準化的流程以提高生產力

透過整合 IaC 配置、安全性和網路設定,讓開發者打造一套最佳化工作流程。

3.降低風險和提升管理

透過統一的大規模工作流程,使用者能在各個層面上創建並執行策略,從而實現應用程式的配置、部署和運行,同時有效減少虛擬機過度擴散。

情境 3-雲端遷移

情境說明

多數企業已將資料中心數位化、整合雲端服務和雲端遷移視為核心策略為了確保遷移流暢性,企業必須思考如何在雲環境中,標準化和自動化應用程式的交付流程。因為僅僅將虛擬機從地端遷移到雲端無法真正發揮雲端策略的潛力和優勢。HashiCorp 的雲端架構解決方案能幫助企業大規模地自動化和標準化雲端服務,從而提高營運效率。

透過 Terraform 實現更快、更安全的雲端遷移

Terraform 強化 IaC 的可重複性

以一致、可重複的基礎架構配置流程,為雲遷移建立值得信賴的基礎。

  • 基礎架構代碼化的應用程式

將基礎設施代碼化,從而減少人為錯誤並提升自動化。

  • 一致的跨雲管理基礎架構

在眾多公有雲端環境,使用同一個工作流程配置基礎架構。

  • 建立可重複使用的基礎架構

使用相同的配置來確保測試(Testing)、臨時(Staging)和正式(Production)環境的一致性。

Iac architec

雲策略帶來的效益

1.加快應用程式交付速度

透過將應用程式交付流程自動化,並整合自助式平台,開發團隊能夠將原需耗時數個月的應用程式部署流程縮減至幾天。

2.降低風險、強化安全性和管理策略

維持嚴格的安控和管理政策,讓資安和合規團隊制定安控規則和處置方案。

3.提升營運效率

透過將工作流程標準化並制定一致的雲端營運模式,企業能縮小團隊間的技能差距,並同時簡化安控和管理帶來的挑戰。

情境 4 - Terraform 與 Kubernetes 的整合

情境說明

雖然 Kubernetes 是目前最先進的排程解決方案,然而,DevOps 團隊仍面臨著許多挑戰,例如:保證 Kubernetes 的穩定性和安全性,以及如何將應用程式順暢地部署至 Kubernetes 上。開發者能透過主流雲端原生工具配置和更新 K8s 資源,從而加速 Kubernetes 的整合過程。另外,透過導入 Vault (HashiCorp 資安工具)的資安解決方案,使用者能夠安全地在 K8s 上運行和串接企業版應用程式。

Terraform 實現 Kubernetes 大規模自動化佈署

Terraform 管理 Kubernetes 生命週期

  • 統一工作流程

如果已經使用 Terraform 配置 Kubernetes 叢集,建議沿用相同的配置語言和策略來確保應用程式部署至 K8s 叢集時順暢且一致。

  • 生命週期管理

Terraform 不僅支援資源的創建,它的自動化管理功能也包括資源的更新和刪除。因此當資源被 Terraform 追蹤時,使用者無需直接介入或查詢 API,從而減化操作時的複雜性和風險。

  • 資源相依性

Terraform 有能力分辨各資源間的相依性。例如,當一個 Persistent Volume Claim 需要依附於特定的 Persistent Volume 來取得儲存空間,如果該 Persistent Volume 建立失敗,Terraform 就會避免去嘗試建立該 Claim。

K8s and Terraform integration
Vault and K8s

一站式 API 進行機密管理、加密以及網路設定

透過結合 HashiCorp VaultHashiCorp Consul,開發者能將安全和網路需求模組化和自動化,並為企業提供以下價值:

  • 一致的安控管理政策

透過結合 Vault 和 Consul 為開發者建立一套標準的策略和流程,確保執行機密管理和網路設定時,整個組織都能遵循相同的工作流程。

  • 消弭「工具蔓延」

避免不必要的工具堆疊和重複性勞動,讓企業專注打造適用於各部門的解決方案。

整合 Kubernetes 與 Terraform 帶來的效益

1.管理和優化資源的生命週期

透過 Terraform 將 K8s 基礎架構代碼化,最大程度地降低人為錯誤並強化自動化流程。

2.保護和管理機敏資料

HashiCorp Vault 的自動身份驗證和密鑰管理機制能夠大幅降低機密外洩的風險。透過儲存 Kubernetes 密鑰,Vault 確保了機密安全性。

3.自動化網路配置,用更安全的方式交付應用程式

透過 HashiCorp Consul 建立的網路服務,整合身份驗證、L7 流量管理、K8s 叢集以及服務間加密,從而提高安全性。

想了解更多 Terraform 資訊嗎?
歡迎與我們聯繫,由專人為您服務