阿里雲推薦使用 Terraform 作為 IaC 工具來管理雲上基礎設施。在開始使用前,先瞭解 Terraform 是什麼、能做什麼,以及如何與阿里雲協同工作。
什麼是 Terraform
Terraform 是 HashiCorp 開源的聲明式 IaC 工具。“聲明式”意味著只需在設定檔中描述資源的期望狀態(例如“一台 2 核 4G 的 ECS 執行個體,位於華東 1 地區”),Terraform 自動處理 API 呼叫、依賴關係和執行順序。
這與通過控制台操作的方式有本質區別:
控制台操作 | Terraform | |
操作方式 | 在介面上逐項點擊和填寫參數 | 在設定檔中描述資源的期望狀態 |
執行過程 | 手動逐個建立資源,手動處理依賴順序 | 自動解析依賴關係,自動完成建立 |
環境複製 | 重複操作,難以保證一致性 | 同一份設定檔可重複部署多套環境 |
變更記錄 | 依賴Action Trail日誌 | 設定檔納入版本控制(如 Git),變更可追溯、可復原 |
團隊協作 | 依賴文檔和口頭約定 | 設定檔可審查、可共用、可複用 |
Terraform 將基礎設施管理從“手動操作”變為“編寫和維護代碼”,適合管理多個資源、多套環境或需要團隊協作的情境。如果只是臨時建立少量資源,控制台操作更直接。
Terraform 與阿里雲
Terraform 通過 Provider 外掛程式與雲平台互動。每個雲端服務商提供各自的 Provider,將設定檔中的資源定義轉化為對應平台的 API 呼叫。
阿里雲是國內第一家與 Terraform 整合的雲端服務商,提供官方維護的 Terraform Provider(alicloud)。該 Provider 覆蓋阿里雲上的絕大多數資源類型,包括但不限於:
計算與容器:ECS 雲端服務器、ACK Container Service、Function Compute、Auto Scaling
網路:VPC 專用網路、負載平衡(SLB/ALB/NLB)、NAT Gateway、雲企業網
儲存與資料庫:OSS Object Storage Service、NAS 檔案儲存體、RDS、PolarDB、Redis、MongoDB
安全與管理:RAM 存取控制、密鑰管理、Web Application Firewall
巨量資料與 AI:MaxCompute、PAI
Terraform 如何管理資源
Terraform 的核心邏輯是對比期望狀態與實際狀態,自動計算需要執行的操作。
整個過程分為三步:
編寫:在設定檔中描述雲資源及其屬性,例如 ECS 的規格、鏡像、所屬網路等。
預覽:Terraform 對比設定檔與實際資源狀態,產生變更計劃,列出將要建立、修改或刪除的資源。資源發生實際變化之前,可以先審查這份計劃。
執行:確認計劃無誤後,Terraform 通過阿里雲 OpenAPI 自動完成所有操作,並記錄資源的最新狀態。
後續每次修改設定檔並重新執行時,Terraform 只處理差異部分——新增的資源建立、變更的屬性更新、移除的資源銷毀,未變更的資源不受影響。
使用 Terraform 的優勢
執行前可預覽:每次執行前,Terraform 產生變更計劃,列出將要建立、修改或刪除的資源,避免意外變更。
累加式更新:只處理髮生變化的部分,不重建未變更的資源。
多雲統一管理:支援多個雲平台的 Provider,可在同一套工作流程中管理阿里雲、AWS 等不同平台的資源。
模組化複用:將常用的資源群組合(如 VPC + 子網 + 安全性群組)封裝為模組,在不同專案和環境中複用。
狀態持續追蹤:通過狀態檔案持續記錄每個資源與實際雲資源的對應關係,確保管理的一致性。
常見問題
Terraform 是否收費?
Terraform 開源版免費。通過 Terraform 建立的雲資源按阿里雲標準計費,與控制台建立的資源計費規則相同。
使用 Terraform 需要編程基礎嗎?
不需要。Terraform 使用專用的 HCL(HashiCorp Configuration Language)配置語言,文法簡潔,以聲明方式描述資源屬性,無需傳統編程經驗。如果希望免代碼操作,可使用 Explorer 介紹通過圖形介面產生和執行配置。
Terraform 操作對已有雲資源有什麼影響?
Terraform 只管理設定檔中定義的資源,不影響未納入管理的已有資源。需要注意的是,Terraform 執行的建立、修改、刪除操作直接作用於真實雲資源,執行前建議審查變更計劃。
已經在控制台建立的資源能納入 Terraform 管理嗎?
可以。通過 import 功能將已有資源匯入 Terraform 管理範圍,匯入後編寫對應的設定檔描述這些資源,即可通過 Terraform 統一管理。
通過 Terraform 管理的資源還能在控制台操作嗎?
技術上可以,但不推薦。Terraform 通過狀態檔案追蹤資源狀態,在控制台手動修改會導致狀態檔案與實際狀態不一致,下次執行時可能覆蓋手動修改或產生衝突。建議 Terraform 管理的資源統一通過 Terraform 操作。
Terraform 和 ROS 有什麼區別?
兩者都是聲明式 IaC 工具。Terraform 是開源的第三方工具,支援多雲管理;ROS(Resource Orchestration Service服務)是阿里雲原生服務,與阿里雲控制台深度整合。需要多雲管理或已有 Terraform 經驗時推薦 Terraform;主要管理阿里雲資源且傾向原生工具時可選擇 ROS。詳情參閱什麼是Resource Orchestration Service服務。