Terraform作为开源工具,用于安全高效地预览、配置和管理云基础架构和资源。本文介绍Terraform的基本概念和针对Serverless应用引擎SAE(Serverless App Engine)的应用场景。

什么是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能够创建配置文件的模板,以可重复、可预测的方式定义、预配和配置ECS资源,减少因人为因素导致的部署和管理错误。能够多次部署同一模板,创建相同的开发、测试和生产环境。

  • 基础架构即代码(Infrastructure as Code)

    可以用代码来管理维护资源。允许保存基础设施状态,从而使您能够跟踪对系统(基础设施即代码)中不同组件所做的更改,并与其他人共享这些配置 。

  • 降低开发成本

    您通过按需创建开发和部署环境来降低成本。并且,您可以在系统更改之前进行评估。

从落实到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管理以下资源。

表 1. Resources
资源类型 说明
alicloud_sae_namespace 提供SAE命名空间资源。具体操作,请参见使用Terraform管理SAE命名空间
alicloud_sae_application 提供SAE应用资源。具体操作,请参见使用Terraform管理SAE应用
alicloud_sae_application_scaling_rule 提供SAE弹性伸缩资源。具体操作,请参见使用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 列举SAE弹性伸缩策略。
alicloud_sae_config_maps 列举SAE ConfigMaps。
alicloud_sae_grey_tag_routes 列举SAE灰度规则。
alicloud_sae_ingresses 列举SAE Ingresses。
alicloud_sae_instance_specifications 列举SAE实例规格。