Terraform是一個開源的自動化Resource Orchestration Service工具。Resource Orchestration Service服務ROS(Resource Orchestration Service)為Terraform提供了託管的能力,您可以建立Terraform類型的模板和資源棧,編排阿里雲、AWS或Azure的資源。Terraform功能相容ROS API,您只需建立Terraform類型模板,即可調用ROS API實現相應功能。
使用限制
關於Terraform對ROS功能和資源的支援情況,請參見Terraform支援的功能和資源。
開發方式
建議您使用熟悉的開發方式編寫和測試Terraform代碼。您可以採用以下開發方式:
-
本地開發。
-
使用Terraform線上調試工具開發(僅支援阿里雲)。
-
(推薦)使用ROS建立Terraform類型資源棧,然後根據需求繼續建立或更新資源棧。更多資訊,請參見建立Terraform類型資源棧、繼續建立資源棧和更新資源棧。
通過ROS使用Terraform的優勢
通過ROS使用Terraform相較直接使用Terraform CLI,增加了很多額外的能力,讓使用者擁有更好的體驗,具體有以下幾點:
-
和ROS模板一致的控制台體驗
ROS 控制台提供了一致的使用者體驗,與ROS模板的管理方式相同,使使用者能夠在一個集中化的平台上管理所有資源。
在 ROS 控制台的建立資源棧頁面中,填寫資源棧名稱,選擇地區(如華東1(杭州)),並在模板配置地區載入 Terraform 模板。
控制台會將 Terraform 模板中的變數自動轉化為可視化參數配置表單,支援按需設定 VPC 配置、交換器、執行個體規格、安全性群組等資源參數,並提供下拉選項和預設值供選擇。
$ terraform plan Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols: + create # alicloud_vpc.default will be created + resource "alicloud_vpc" "default" { + cidr_block = "10.0.0.0/8" + vpc_name = (known after apply) } Plan: 6 to add, 0 to change, 0 to destroy.$ terraform apply alicloud_vpc.default: Creating... alicloud_vpc.default: Creation complete after 6s [id=vpc-bp1...] alicloud_vswitch.default[0]: Creating... alicloud_vswitch.default[0]: Creation complete after 5s [id=vsw-bp1...] Apply complete! Resources: 6 added, 0 changed, 0 destroyed. -
支援參數/屬性的動態查詢和選擇
-
支援動態查詢參數可選值
-
支援同參數被多屬性引用的綜合查詢
例如,在配置參數時,Virtual Private Cloud 和安全性群組等欄位會自動展示當前地區下可用資源的下拉式清單,支援根據已選參數動態篩選關聯資源。
ROS可以在模板參數配置中指定
AssociationProperty以擷取所選地區下對應的資源,指定AssociationPropertyMetadata對不同參數添加篩選條件,以便在控制台動態選擇參數配置。配置完成後,各參數欄位均可通過下拉式清單直接選擇已有資源,無需手動輸入資源 ID。
-
-
根據模板詢價
在部署前,ROS 可以根據您的 Terraform 模板自動計算並顯示預計的成本,協助您更好地進行預算規劃。
ROS 會彈出費用明細對話方塊,按資源類型(如 ECS 執行個體、RDS 資料庫執行個體)、規格、地區、數量和計費方式逐項列出預估費用,並在頂部匯總顯示預付包月費用總額。
-
產品開通和角色檢查
-
自動檢查:ROS會自動檢查Terraform模板中涉及的產品是否已開通,所需的角色和許可權是否存在,確保部署前的準備工作完善。例如,若檢測到 TransitRouter 等產品未開通,會彈出依賴檢查對話方塊,提示異常項數量並提供開通連結,單擊即可跳轉至對應產品的開通頁面。
-
提示引導:如果發現未開通的產品或缺失的角色,ROS會提供明確的提示和引導,協助使用者快速完成必要的配置。
單擊開通連結後,將跳轉至對應產品的開通頁面(如轉寄路由器),勾選服務合約後即可完成產品開通。
-
-
風險檢查
比如在刪除資源(如安全性群組)時,ROS會自動檢查可能帶來的風險,協助您避免潛在的問題。
例如,在刪除資源棧時,系統會彈出刪除資源棧對話方塊,頂部顯示紅色風控警告,風險提示地區列出存在依賴關係的資源(如安全性群組被 ECS 執行個體引用),使用者需選擇刪除方式(保留資源或釋放資源)並確認資源棧名稱後才能執行刪除操作。
-
支援模板版本管理和共用
ROS 支援對 Terraform 模板進行版本管理,可查看模板詳情(模板 ID、共用狀態、建立和更新時間),通過版本選取器切換不同模板版本,線上瀏覽模板內容(如 main.tf 檔案的 HCL 代碼),並可通過共用模板按鈕將模板共用給其他使用者,或直接單擊建立資源棧進行部署。
-
標籤和資源群組傳遞
可將標籤、資源群組一次性傳遞給模板中所有資源。
應用情境
建立Terraform類型資源棧
如果您希望在多個雲平台(例如AWS、Azure等)或非雲平台上建立並管理資源,Terraform可以協助您實現跨雲平台的Resource Orchestration Service和管理,您可以通過建立Terraform類型資源棧統一管理不同雲平台上的資源。具體操作,請參見建立Terraform類型資源棧。
建立Terraform類型模板
如果您希望在阿里雲平台上建立並管理多雲平台(AWS、Azure等)的資源,您可以在模板中定義多雲平台的資源以及資源之間的依賴關係,方便您進行多雲環境下的資源管理。具體操作,請參見建立Terraform類型模板。
模板結構
Terraform類型模板是Resource Orchestration Service服務ROS(Resource Orchestration Service)託管Terraform後支援的模板,用於編排阿里雲、AWS或Azure的資源。您可以在模板中定義資源、參數以及資源間的依賴關係。更多資訊,請參見Terraform類型模板結構。關於如何定義模板中的參數,請參見瞭解阿里雲Terraform。
開發建議
Resource Orchestration Service為Terraform提供了託管能力,當您瞭解了Terraform和Terraform託管方式,需要開發Terraform代碼並在ROS中使用時,可以採用以下建議。更多資訊,請參見Terraform代碼開發方式和建議。
-
細化變數定義。
-
建議指定Provider版本。
-
通過偽參數擷取資源棧資訊。
-
控制參數(變數)在控制台的輸入方式。
-
建議使用Aliyun::Terraform-v1.0及其以上版本。
-
使用Metadata控制參數(變數)在控制台的顯示。
-
把僅供本地使用的代碼放入以.debug.tf結尾的檔案。
-
不建議在.tf檔案中聲明阿里雲(alicloud)Provider。
-
不建議使用.tfvars檔案,而是通過ROS參數傳遞變數值。
Terraform模板樣本
關於Terraform的更多模板樣本,請參見Terraform模板樣本。