Terraform是一個開源的自動化資源編排工具。資源編排服務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控制臺和本地Terraform CLI中部署同一個 Terraform 模板的對比圖:
支持參數/屬性的動態查詢和選擇
支持動態查詢參數可選值
支持同參數被多屬性引用的綜合查詢
ROS可以在模板參數配置中指定
AssociationProperty
以獲取所選地域下對應的資源,指定AssociationPropertyMetadata
對不同參數添加篩選條件,以便在控制臺動態選擇參數配置。根據模板詢價
在部署前,ROS 可以根據您的 Terraform 模板自動計算并顯示預計的成本,幫助您更好地進行預算規劃。
產品開通和角色檢查
自動檢查:ROS會自動檢查Terraform模板中涉及的產品是否已開通,所需的角色和權限是否存在,確保部署前的準備工作完善。
提示引導:如果發現未開通的產品或缺失的角色,ROS會提供明確的提示和引導,幫助用戶快速完成必要的配置。
風險檢查
比如在刪除資源(如安全組)時,ROS會自動檢查可能帶來的風險,幫助您避免潛在的問題。
支持模板版本管理和共享
標簽和資源組傳遞
可將標簽、資源組一次性傳遞給模板中所有資源。
應用場景
創建Terraform類型資源棧
如果您希望在多個云平臺(例如AWS、Azure等)或非云平臺上創建并管理資源,Terraform可以幫助您實現跨云平臺的資源編排和管理,您可以通過創建Terraform類型資源棧統一管理不同云平臺上的資源。具體操作,請參見創建Terraform類型資源棧。
創建Terraform類型模板
如果您希望在阿里云平臺上創建并管理多云平臺(AWS、Azure等)的資源,您可以在模板中定義多云平臺的資源以及資源之間的依賴關系,方便您進行多云環境下的資源管理。具體操作,請參見創建Terraform類型模板。
模板結構
Terraform類型模板是資源編排服務ROS(Resource Orchestration Service)托管Terraform后支持的模板,用于編排阿里云、AWS或Azure的資源。您可以在模板中定義資源、參數以及資源間的依賴關系。更多信息,請參見Terraform類型模板結構。關于如何定義模板中的參數,請參見Terraform產品介紹。
開發建議
資源編排為Terraform提供了托管能力,當您了解了Terraform和Terraform托管方式,需要開發Terraform代碼并在ROS中使用時,可以采用以下建議。更多信息,請參見Terraform代碼開發方式和建議。
細化變量定義。
建議指定Provider版本。
通過偽參數獲取資源棧信息。
控制參數(變量)在控制臺的輸入方式。
建議使用Aliyun::Terraform-v1.0及其以上版本。
使用Metadata控制參數(變量)在控制臺的顯示。
把僅供本地使用的代碼放入以.debug.tf結尾的文件。
不建議在.tf文件中聲明阿里云(alicloud)Provider。
不建議使用.tfvars文件,而是通過ROS參數傳遞變量值。
Terraform模板示例
關于Terraform的更多模板示例,請參見Terraform模板示例。