文章目標:解析 Terraform 的各個元件,以圖像方式展示其關聯性和作用。
文章同步分享到
blog – https://devops-with-alex.com/day-5-terraform-master-component/
ithome – https://ithelp.ithome.com.tw/articles/10323440
Medium – https://medium.com/p/feec6ca86588
1. 掌握 Terraform 元件,一張圖秒懂 Terraform
在一張圖秒懂 Terraform 中,首先點選位置連結下載這張秒懂 Terraform的圖片,我們會分別介紹4個最重要的 Terraform 核心概念。
- Terraform工作流 ( Workflow )
- Terraform 核心元件 (Core Component)
- Terraform 元件階層 ( Component Hierarchy )
- Terraform 元件 ( Component )
2. Terraform工作流 ( Workflow ) 的概念
Workflow的實際執行位置:
在Terraform工作流中,分成兩個主要部分會在不同的地方執行。
- Terraform init / fmt / validate / plan :都會在本地電腦完成配置與撰寫
- Terraform apply / destroy :會在雲端/地端架構中實際執行。
Workflow的相關說明:
- Terraform init:初始化本地 Terraform 環境
- Terraform fmt / validate:格式化 Terraform 代碼與驗證 Terraform 代碼的語法與結構。
- Terraform plan:比較 Terraform 狀態和雲端中實際狀態,建立並顯示一個執行計畫,不會實際改變部署環境。
- Terraform apply:根據計畫執行實際的基礎架構創建或更改操作。
- Terraform destroy:刪除此特定 Terraform 環境所管理的所有資源。
3. Terraform 核心元件 (Core Component)的概念
- 安裝執行檔 (Executable):Terraform的執行檔,用來與基礎設施進行溝通與執行。
- 雲端架構套件 (Provider plugins):Terraform的基礎架構供應商套件,提供簡化基礎架構之後的元件,例如:AWS、GCP、Azure等。
一般會使用下列的核心元件:Provider (供應商)、Module (模組) - 元件配置檔 (Configuration File):Terraform的架構描述檔案,用來定義與描述想要控制的基礎架構,例如:指定虛擬機的數量、網路連線、資源設定等。
一般會使用下列的核心元件:Resources(資源)、Variables(變數)、Data Sources(資料來源)、Outputs(輸出) - 狀態檔案 (State Data):Terraform的狀態檔案,用來管理實際基礎設施的狀態和資源與程式碼之間的關係,例如:基礎架構的建立狀態、版本控制、資源的相依性等。
一般會使用下列的核心元件:State(狀態)、Backend(遠端狀態後台)
Terraform 元件階層 ( Component Hierarchy )
了解Terraform 核心元件 (Core Component)的概念後,我們要利用這個元件階層圖來做更深入的說明,深入了解Terraform實際使用的元件關係。
- 藍色部分:與雲端供應商的元件與實際配置有關
- 紫色部分:主要是terraform的 HCL語言在撰寫時,實際會用到五種元件
- 綠色部分:將雲端元件抽象化,變成更加簡潔的自訂模組,並提供開發人員更高的彈性,產生模組 module
- 黃色部份:主要是記錄基礎架構,當前預期的狀態與實際狀況的差異
這些元件都有其特定的用途,我們會在後續的文章中詳細介紹它們的作用,並且透過實際的操作來讓使用者更容易了解其概念。
4. Terraform 元件 ( Component )
藍色部分-雲端供應商元件:與雲端供應商的元件與實際配置有關
Providers(供應商):Terraform 支援各種不同的基礎架構供應商,如 Amazon Web Services、Microsoft Azure、Google Cloud Platform 等等。
紫色部分-基礎元件:主要是terraform的 HCL語言在撰寫時,實際會用到五種元件
- Provisioners(配置器):用於在資源創建後設置它們的狀態,例如安裝軟體或更新設定。
- Resources(資源):代表基礎架構中的一個單一元件,例如 GCP 的 GKE VM 實例、GCS 存儲桶等等。
- Variables(變數):用於設置 Terraform 模組的參數,例如指定 GCP 的 GKE VM 實例的類型和數量。
- Data Sources(資料來源):用於從現有的基礎架構中檢索資料,例如檢索現有的 GCP 實例列表。
- Outputs(輸出):用於顯示 Terraform 模組創建的基礎架構元件的屬性,例如顯示 GCP 實例的 IP 位址。
綠色部分-模組元件:將雲端元件抽象化,變成更加簡潔的自訂模組,並提供開發人員更高的彈性,產生模組 module
Modules(模組):可重複使用的 Terraform 代碼塊,可用於創建類似的基礎架構元件。
黃色部分-狀態元件:主要是記錄基礎架構,當前預期的狀態與實際狀況的差異
- State(狀態):Terraform 記錄當前基礎架構的狀態,並在後續運行中與預期狀態進行比較,以確保基礎架構保持一致。
- Backend(遠端狀態後台):Terraform 存儲狀態的後端,狀態包含有關當前基礎架構狀態的信息,例如哪些資源正在運行、哪些資源已經被創建、哪些資源已經被刪除等。
5. 總結 Summary
我們分別介紹了4個最重要的 Terraform 核心概念
- Terraform工作流 ( Workflow ):了解工作流中五個流程的各自定位,
與 Terraform init / fmt / validate / plan / apply / destroy 指令各自代表的意義。 - Terraform 核心元件 (Core Component):了解四種個流程的各自定位,
與 Terraform init / fmt / validate / plan / apply / destroy 指令各自代表的意義。 - Terraform 元件階層 ( Component Hierarchy ): 元件階層用來理解terraform裡面所有不同元件的用途與階層。
- Terraform 元件 ( Component ):各自元件的用途與使用方式。
6. 相關連結
- Terraform-from-zero-to-hero-10-Lab-GCP-Infrastucture-as-Code — https://github.com/qwedsazxc78/Terraform-from-zero-to-hero-10-Lab-GCP-Infrastucture-as-Code
- Terraform-project-best-practice — https://github.com/qwedsazxc78/terraform-project-best-practice
- 歡迎訂閱我的udemy課程:Terraform 從零開始 — 10+實戰Lab打造GCP雲端自動化架構課程
- 一張圖秒懂 Terraform連結下載