Terraform 使用
在了解了 Terraform 的基本概念和工作流之后,您该如何使用 Terraform 来创建、更新或销毁基础设施资源呢?
Terraform 使用步骤
Terraform 的使用流程分为四个步骤:
编写基础设施模板文件
首先,您必须在模板文件中定义并以代码的形式编写您的基础设施。模板文件向 Terraform 描述了您想要配置的资源。
生成执行计划
运行 Terraform Plan 命令生成您期望的状态的执行计划。
运行执行计划
运行 Terraform Apply 执行该计划来构建模板中所描述的基础设施。
变更配置,继续增量执行
随着模板内容的变化,Terraform 可以确定哪些变化了,并且创建可以运行的增量执行计划。
Terraform 安装
Terraform 已经预先安装在阿里云 Cloud Shell 上了,您也可以通过二进制包安装的方式或者使用不同操作系统的包管理器将其安装在本地机器上。
例如,您想要在 Windows 机器上手动安装 Terraform:首先,通过 Terraform 下载地址下载与您的系统要求相符的软件包,解压软件包。Terraform 包中包括一个叫做 terraform 的单独二进制文件。编辑PATH变量,将 Terraform 包含进去,然后在新终端输入terraform -help
来验证安装。
更多安装方式,详见Terraform 安装。
Terraform 身份认证
对 Terraform 的身份认证指的是在通过 Terraform 操作阿里云基础设施前对阿里云 Terraform Provider 的身份认证,只有认证通过后才能与阿里云 API 进行通信并创建和管理阿里云的基础设施资源。
阿里云 Terraform Provider 的身份认证方式有很多种,选择不同的认证方式一方面依赖于 Terraform 安装和运行所在的环境,另一方面取决于您的使用场景。此处主要介绍通过环境变量设置身份认证的方式,更多认证方式,详见Terraform 身份认证。
如果您在本机上运行 Terraform您首先得需要一个阿里云 RAM 用户,并为该用户创建身份认证信息 AccessKey ID和AccessKey Secret。登录阿里云 RAM 控制台的用户页面,选择一个现有用户或创建一个新用户,并为其创建AccessKey。然后通过使用环境变量 ALICLOUD_ACCESS_KEY 和 ALICLOUD_SECRET_KEY 进行身份设置,设置成功后,Terraform 将使用这个密钥进行认证。
export ALICLOUD_ACCESS_KEY="<AccessKey ID>"
export ALICLOUD_SECRET_KEY="<AccessKey Secret>"
如果您在 Cloud Shell 上运行 Terraform
阿里云的 Cloud Shell 对 Terraform 是预认证过的。Cloud Shell 是一个计算引擎虚拟机,身份凭证是自动的,即当您登录 Cloud Shell 后,将以您的登录身份自动设置环境变量 ALICLOUD_ACCESS_KEY 和 ALICLOUD_SECRET_KEY,您无需再单独设置。
如果您在阿里云 ECS 实例上运行 Terraform
在阿里云 ECS 实例上手动设置环境变量 ALICLOUD_ACCESS_KEY 和 ALICLOUD_SECRET_KEY 后,Terraform 即可使用这个密钥进行认证。但是从安全性考虑,在阿里云 ECS 上运行 Terraform 时,推荐使用ECS 服务角色认证方式。
如果您在阿里云 ACK 容器中运行 Terraform
在 Dockerfile 中预设置环境变量 ALICLOUD_ACCESS_KEY 和 ALICLOUD_SECRET_KEY,每当新容器创建后,Terraform 即可使用这个密钥进行认证。但是从安全性考虑,在阿里云 ACK 容器中运行 Terraform 时,推荐使用OIDC 角色扮演(AssumeRoleWithOIDC)认证方式。
如果您在阿里云外的机器上运行 Terraform
在阿里云外的机器上手动设置环境变量 ALICLOUD_ACCESS_KEY 和 ALICLOUD_SECRET_KEY 后,Terraform 即可使用这个密钥进行认证。
使用案例
让我们通过创建一个简单的 VPC 网络来进一步加深对 Terraform 工作流的理解。
首先,创建一个带有 .tf 扩展名的配置文件,然后在文件中定义阿里云作为提供商,添加 HCL 代码以创建一个阿里云 VPC 网络实例。保存代码后,切换到保存文件的目录,运行 terraform init 初始化阿里云提供商,运行 terraform plan 和 terraform apply 命令依次生成执行计划并应用。运行完 terraform apply 后,将在阿里云上创建一个名为 mian-vpc 的 VPC 网络。