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資源更加安全。
面向終態能力,防止配置漂移。
Resource Orchestration Service能力,一鍵式部署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應用。 | |
提供SAEAuto Scaling資源。具體操作,請參見使用Terraform實現SAE應用自動彈性。 | |
提供SAE ConfigMap資源。 | |
提供SAE灰階規則資源。 | |
提供SAE Ingress資源。 | |
提供SAE公網負載平衡資源。具體操作,請參見使用Terraform為SAE應用綁定SLB。 | |
提供SAE私網負載平衡資源。 |
資源類型 | 說明 |
開通SAE。 | |
列舉SAE命名空間。 | |
列舉SAE應用。 | |
列舉SAEAuto Scaling策略。 | |
列舉SAE ConfigMaps。 | |
列舉SAE灰階規則。 | |
列舉SAE Ingresses。 | |
列舉SAE執行個體規格。 |