iT邦幫忙

2025 iThome 鐵人賽

DAY 23
0

Hi 各位好,終於來到第 23 天!
接下來四天,我們將進入 Terraform 與基礎建設自動化 的主題。
今天先簡單介紹 Terraform 的基本概念與使用方式。


什麼是 Terraform

就像 Amazon、Azure、Google 把機房的所有設備搬到網頁上讓使用者操作,
Terraform 則是把「建置基礎設施」這件事轉換成一份 可讀的宣告式設定檔

透過 Terraform,我們可以使用文字檔描述整個雲端環境的結構,
包括網路、虛擬機(VM)、儲存空間、權限設定等。
這樣不僅方便版本控制,也能讓基礎建設變更具備一致性與可重現性。


官方資源與學習入口

  1. 官方網站
    包含安裝說明與基本使用教學:
    👉 https://developer.hashicorp.com/terraform

  2. Terraform Registry
    提供所有可用的「供應商(Provider)」清單,例如:
    AWS、GCP、Azure、Kubernetes、GitLab、Datadog 等。
    👉 https://registry.terraform.io/

  3. 官方教學課程
    若想深入學習 HCL(HashiCorp Configuration Language)的撰寫方式,可參考:
    👉 Write Terraform Configuration
    官方提供從語法入門到模組化管理的完整教程集


Terraform 的運作原理

Terraform 的核心概念是「**透過呼叫 供應商API 建立 雲端服務 **」。
運作方式如下:

  • Terraform 根據設定檔(.tf)內容,呼叫 供應商 所對應的雲端 API。
  • 與實際的雲端平台互動(建立、修改或刪除資源)。
  • 這讓 Terraform 成為「雲端 API 的統一語言」,實現基礎建設即程式(IaC, Infrastructure as Code)。

以 GCP 為例:

  1. 進入 google Provider 頁面。
  2. 點擊 Documentation,即可查看各資源(如 google_compute_instancegoogle_storage_bucket)的設定方式與參數說明。

Terraform Registry
GCP Documentation


Terraform 設定檔結構

Terraform 設定檔(副檔名 .tf)由多個 區塊(block) 組成,每個區塊代表一個資源、變數或提供者設定。

範例:

resource "aws_vpc" "main" {
  cidr_block = var.base_cidr_block
}

語法結構

<BLOCK TYPE> "<BLOCK LABEL>" "<BLOCK LABEL>" {
  <IDENTIFIER> = <EXPRESSION>  # Argument
}

說明:

  • Block Type:區塊類型,例如 resourcevariableprovider
  • Block Label:用於區分或引用同類型的多個區塊。
  • Arguments:區塊內的設定參數,以 key-value 形式呈現。

補充:

  • 區塊可巢狀使用,以描述資源關聯性。
  • 可透過 variable 進行參數化設定,提高模組化與重用性。
  • 通常第一個標籤代表 Provider 提供的資源名稱,便於識別與引用。

建立第一個資源範例

以下範例示範如何建立一個屬於 IT 部門的 VPC:

resource "aws_vpc" "it" {
  cidr_block = "10.1.0.0/16"
}

這段程式碼會建立一個 CIDR 為 10.1.0.0/16 的 AWS VPC,名稱為 it

使設定可參數化(Variables)

為了讓不同部門或環境能重複使用相同設定,可使用變數:

variable "base_cidr_block" {
  description = "VPC 使用的 /16 CIDR 範圍,例如 10.1.0.0/16"
  default     = "10.1.0.0/16"
}

再於資源中引用:

resource "aws_vpc" "it" {
  cidr_block = var.base_cidr_block
}

使用 .tfvars 管理不同環境設定

# dev.tfvars
base_cidr_block = "10.2.0.0/16"

# prod.tfvars
base_cidr_block = "10.3.0.0/16"

執行時指定檔案:

terraform apply -var-file="dev.tfvars"

這樣即可在不同環境重用相同模組,提升維護性與一致性。


Terraform 基本操作流程

當我們完成設定檔的撰寫後,下一步就是讓 Terraform 實際執行這些設定,在雲端建立或更新資源。
整個操作流程相當簡單,只需三個步驟:

terraform init   # 初始化專案並下載 Provider 外掛
terraform plan   # 預覽變更內容
terraform apply  # 套用變更至實際環境

指令說明:

  • init:初始化 Terraform 專案,下載相依的 Provider 與模組。
  • plan:預覽執行結果,顯示即將建立、修改或刪除的資源。
  • apply:確認後執行變更,實際建立或更新雲端資源。

這三個步驟構成 Terraform 的核心循環:
設定 → 規劃 → 執行,是基礎建設自動化的基石。


小結

今天我們介紹了 Terraform 的基礎觀念與使用方式,內容包含:

  1. Terraform 是什麼
    了解 Terraform 如何將基礎建設以「宣告式設定檔」的形式進行管理,並實現基礎建設即程式(IaC)。

  2. 官方文件與資源
    認識學習入口與 Terraform Registry,了解如何查詢各雲端供應商(Provider)的資源文件與範例。

  3. 運作原理
    Terraform 透過 Provider 呼叫雲端 API,統一不同平台的基礎建設管理方式。

  4. 撰寫風格與規範
    熟悉 .tf 檔案結構、Block 語法組成與變數(variable)使用方式,建立可重用的設定檔。

  5. 基本部署流程
    認識 terraform init → plan → apply 的操作循環,從設定、預覽到實際執行的完整過程。


Terraform 的魅力在於,它讓雲端基礎建設的管理更像程式開發一樣可追蹤、可重現。
透過今天的學習,我們已經能讀懂最基本的 .tf 設定檔,並理解 Terraform 的角色與運作方式。

明天,我們將更深入探索 HCL(HashiCorp Configuration Language) 的語法特性,
包括 .tf 檔案命名與載入順序、locals 的運用,以及如何設計更具可讀性與可擴充性的 Terraform 配置。

希望今天的分享,能讓大家對 Terraform 有更清晰的認識,
準備好邁向下一步的自動化實作!

謝謝大家的閱讀,我們明天見!


上一篇
Day22 Kubernetes 維運工具:k9s
下一篇
Day24 Terraform 專案架構與組態管理
系列文
雲端與資料平台實戰:從抽象概念到落地技術24
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言