Terraform是一個基礎設施即代碼(Infrastructure as Code)工具,用于安全高效地預覽、配置和管理云基礎架構和資源。Serverless 應用引擎 SAE(Serverless App Engine)支持Terraform,使操作SAE的資源更加安全,對接CI/CD和GitOps更加簡單。
什么是Terraform
基本功能
Terraform是IT基礎架構自動化編排工具,可以用代碼來管理維護IT資源。更多信息,請參見什么是Terraform。
Terraform的命令行接口CLI(Command Line Interface)提供一種簡單機制,用于將配置文件部署到阿里云或其他任意支持的云上,并對其進行版本控制。它編寫了描述云資源拓撲的配置文件中的基礎結構,例如虛擬機、存儲賬戶和網絡接口。
Terraform通過Provider支持新的基礎架構,讓您在阿里云上能夠輕松使用簡單模板語言來定義、預覽和部署云基礎結構。
Terraform可以創建、修改和刪除多種阿里云產品的相關資源,例如ECS、VPC、RDS和SLB等。
關于阿里云與Terraform集成的更多信息,請參見Alibaba Cloud Provider。
應用場景
Terraform可以對基礎設施進行編碼,利用代碼來進行資源的增刪查改。關于Terraform管理阿里云產品的示例應用場景,請參見應用場景。
使用優勢
從宏觀角度而言,Terraform優勢如下:
基礎設施即代碼:通過Terraform,可以將基礎設施的定義和配置存儲為代碼,這樣可以進行版本控制、團隊協作和復用,減少了手動操作和錯誤的同時,提高了效率。
可靠性和穩定性:阿里云技術團隊提供了場景級自動化用例測試保障、自動對接平臺化等內部保障能力。讓用戶使用過程中平穩、順滑、可靠。
豐富的資源支持:阿里云堅持面向資源化理念提供服務,在Terraform資源定義標準化、支持度和支持效率方面持續投入。為用戶提供“開箱即用”的使用體驗。
聲明式語言:Terraform使用HCL(HashiCorp Configuration Language)作為配置語言,它是一種聲明式的語言,通過描述期望的狀態,而不是編寫詳細的步驟,使得代碼更易于理解和維護。
可擴展性:Terraform提供了豐富的資源和提供者插件,可以滿足不同的需求,并且用戶也可以自定義和擴展插件來支持特定的基礎設施。
與其他工具的集成:Terraform可以與其他工具(如Ansible、Jenkins、Gitlab等)集成,實現更復雜的自動化工作流程,如自動化測試、持續集成和持續部署等。
從落實到SAE的微觀角度而言,Terraform優勢如下:
提供聲明式基礎架構即代碼IaC(Infrastructure as Code)
以應用為中心,支持應用部署、擴縮容、升降配、啟停、SLB綁定等。
編寫容易上手,無需理解API。
被各種流行的CI/CD流水線所集成,提升SAE應用交付的自動化程度。
擁抱Terraform生態
LiveDiff能力,操作SAE資源更加安全。
面向終態能力,防止配置漂移。
資源編排能力,一鍵式部署SAE以及依賴云資源,大幅提高建站效率。
資源分類
Resources
資源,表示新創建的資源。更多信息,請參見Resources。
以創建一個SAE應用為例,示例代碼如下:
resource "alicloud_sae_application" "default" { app_description = "tf-testaccDescription" app_name = "tf-testaccAppName" namespace_id = alicloud_sae_namespace.default.id image_url = "registry-vpc.cn-hangzhou.aliyuncs.com/lxepoo/apache-php5" package_type = "Image" vswitch_id = alicloud_vswitch.vsw.id timezone = "Asia/Beijing" replicas = "5" cpu = "500" memory = "2048" }
Data Sources
數據資源,查詢已有的資源信息并獲取其屬性。更多信息,請參見Data Sources。
以列出SAE命名空間為例,示例代碼如下:
data "alicloud_sae_namespaces" "nameRegex" { name_regex = "^my-Namespace" } output "sae_namespace_id" { value = data.alicloud_sae_namespaces.nameRegex.namespaces.0.id }
關于SAE示例的更多信息,請參見通過Terraform管理SAE資源。
通過Terraform管理SAE資源
SAE支持通過Terraform管理以下資源。
資源類型 | 說明 |
提供SAE命名空間資源。具體操作,請參見使用Terraform管理SAE命名空間。 | |
提供SAE應用資源。具體操作,請參見使用Terraform管理SAE應用。 | |
提供SAE彈性伸縮資源。具體操作,請參見使用Terraform實現SAE應用自動彈性。 | |
提供SAE ConfigMap資源。 | |
提供SAE灰度規則資源。 | |
提供SAE Ingress資源。 | |
提供SAE公網負載均衡資源。具體操作,請參見使用Terraform為SAE應用綁定SLB。 | |
提供SAE私網負載均衡資源。 |
資源類型 | 說明 |
開通SAE。 | |
列舉SAE命名空間。 | |
列舉SAE應用。 | |
列舉SAE彈性伸縮策略。 | |
列舉SAE ConfigMaps。 | |
列舉SAE灰度規則。 | |
列舉SAE Ingresses。 | |
列舉SAE實例規格。 |