手動管理雲上基礎設施(建立 ECS、配置網路、設定儲存等)通常依賴控制台操作。當基礎設施規模增長時,手動操作容易出現配置錯誤、環境不一致、變更難以回溯等問題。基礎設施即代碼(Infrastructure as Code,IaC)通過代碼定義、部署和管理基礎設施,替代手動操作,實現自動化、可重複的基礎設施交付。
為什麼要使用IaC
IaC工作原理
主流 IaC 工具以設定檔描述基礎設施,根據檔案中的資源描述,通過 API 與雲端服務互動,自動建立和配置資源。
以典型情境為例:一個應用需要部署到開發、測試和生產三個環境,每個環境包含 ECS 執行個體、RDS 資料庫和 SLB 負載平衡。通過控制台手動建立,需要重複操作三次,且難以保證配置一致。使用 IaC,只需編寫一份設定檔,傳入不同的環境變數,即可自動建立三套完全一致的環境。當情境擴充到數百個應用、數百套許可權配置時,將設定檔製作成模板並傳入變數,即可接入 CI/CD 流水線實現自動化交付。
IaC 的基本工作流程如下:
定義基礎設施:使用配置語言或程式設計語言編寫設定檔,描述所需的資源及其依賴關係。
自動化部署:IaC 工具根據設定檔,通過雲端服務 API 自動建立和配置資源。
變更管理:設定檔變更時,工具自動識別差異,累加式更新基礎設施以保持與配置一致。
IaC的優勢
複用性:同一份設定檔可持續建立和管理多個環境(開發、測試、生產等),確保環境一致性。
自動化:自動化建立和管理雲資源,可整合到 CI/CD 流水線實現持續傳遞。
流程化:設定檔的修改經過代碼審查和自動驗證,以變更管理的方式處理基礎設施更改。
可審計:設定檔納入版本控制,保留完整的變更歷史,支援審計和復原。
如何選擇 IaC 工具
阿里雲適配了多種 IaC 工具,各工具在編寫方式、阿里雲雲產品接入程度和適用情境上有明顯差異:
編寫方式 | 工具 | 適用情境 |
圖形介面,無需編碼 | 快速體驗 IaC,可視化產生和執行配置 | |
HCL 配置語言 | 多雲管理、團隊協作、生產環境 | |
JSON/YAML 模板 | 純阿里雲環境,與阿里雲控制台深度整合 | |
通用程式設計語言 | Team Dev偏好 Java、Python、Go、TypeScript | |
YAML Playbook | 組態管理、應用部署、營運編排 |
Pulumi 等工具也提供阿里雲 Provider,但云產品接入覆蓋度不如 Terraform,建議優先選擇上表中的工具。如果對以上工具都不熟悉,推薦從 Terraform 開始。
阿里雲支援的 IaC 工具
阿里雲與多種 IaC 工具整合,根據使用情境選擇合適的工具:
工具 | 說明 | 瞭解更多 |
Terraform Explorer | 基於 Terraform 的視覺化檢視,提供配置產生和自動執行能力,無需安裝用戶端、編寫配置或管理狀態 | |
Terraform(推薦) | HashiCorp 開源的聲明式工具,通過 HCL 定義雲上和本地資源,支援版本控制、模板複用和自動化工作流程。阿里雲是 Terraform 官方四大主要雲端服務供應商之一,Provider 持續更新 | |
ROS | 阿里雲原生自動化部署服務,免費使用。通過 JSON/YAML 模板定義資源,提供可視化介面和模板庫,支援一鍵部署和託管 Terraform 模板 | |
CDKTF | 使用通用程式設計語言(Java、Go、Python、TypeScript 等)自動產生 Terraform 配置並執行部署,兼具聲明式的自動化和命令式的靈活性 | |
Terraform Cloud / Enterprise | HashiCorp 面向企業的 Terraform 產品,統一管理組織級基礎設施資源 | |
Pulumi | 使用通用程式設計語言定義基礎設施,但阿里雲雲產品接入覆蓋度低於 Terraform,推薦優先使用 CDKTF | |
Ansible | 專註自動化營運,支援組態管理和應用部署。無代理架構,無需在目標機器安裝用戶端 |
常見問題
使用 IaC 需要編程基礎嗎?
不一定。聲明式工具(如 Terraform)使用專用的配置語言(HCL),文法簡潔易學,無需編程經驗。Terraform Explorer 更進一步,提供圖形介面直接組建組態,無需編寫任何代碼。只有使用 CDKTF 或 Pulumi 時才需要掌握 Java、Python 等程式設計語言。
IaC 設定檔可以跨雲平台使用嗎?
取決於工具。Terraform、Pulumi 等工具支援多雲,但每個雲平台有各自的 Provider 和資源定義,設定檔不能直接跨雲複用。不過,模組化的專案結構和通用的工作流程邏輯可以在不同雲平台間複用。ROS 僅適用於阿里雲。
Terraform 是否收費?
Terraform CLI(開源版)免費使用。Terraform Cloud 提供免費層和付費計劃,Terraform Enterprise 為付費產品。在阿里雲上使用 Terraform 管理資源,Terraform 工具本身不收費,但建立的雲資源按阿里雲標準計費。