全部產品
Search
文件中心

Serverless App Engine:Terraform概述

更新時間:Jun 30, 2024

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管理以下資源。

表 1. Resources

資源類型

說明

alicloud_sae_namespace

提供SAE命名空間資源。具體操作,請參見使用Terraform管理SAE命名空間

alicloud_sae_application

提供SAE應用資源。具體操作,請參見使用Terraform管理SAE應用

alicloud_sae_application_scaling_rule

提供SAEAuto Scaling資源。具體操作,請參見使用Terraform實現SAE應用自動彈性

alicloud_sae_config_map

提供SAE ConfigMap資源。

alicloud_sae_grey_tag_route

提供SAE灰階規則資源。

alicloud_sae_ingress

提供SAE Ingress資源。

alicloud_sae_load_balancer_internet

提供SAE公網負載平衡資源。具體操作,請參見使用Terraform為SAE應用綁定SLB

alicloud_sae_load_balancer_intranet

提供SAE私網負載平衡資源。

表 2. Data Sources

資源類型

說明

alicloud_sae_service

開通SAE

alicloud_sae_namespaces

列舉SAE命名空間。

alicloud_sae_applications

列舉SAE應用。

alicloud_sae_application_scaling_rules

列舉SAEAuto Scaling策略。

alicloud_sae_config_maps

列舉SAE ConfigMaps。

alicloud_sae_grey_tag_routes

列舉SAE灰階規則。

alicloud_sae_ingresses

列舉SAE Ingresses。

alicloud_sae_instance_specifications

列舉SAE執行個體規格。