概述
Terraform 实现了基础设施即代码 (IaC) 的方法来管理基础设施,减少手动配置的错误,并确保基础设施部署的一致性和可重复性。它支持各种云提供商(如 AWS、Azure、GCP 等)和本地解决方案,并提供强大的功能来提前规划和审查基础设施变更。
主要特点
- 基础设施即代码 (IaC):使用 HCL(HashiCorp Configuration Language)以代码形式定义基础设施。
- 多云支持:支持 AWS、Azure、GCP 等各种云和服务的提供商。
- 状态管理:跟踪基础设施的实际状态,以有效管理变更。
- 执行计划预览:在应用更改之前,可以预览将创建、修改或删除哪些资源。
主要命令(子命令)
Terraform 通过各种子命令执行基础设施管理工作流。
核心工作流
实用工具
生成的命令:
请尝试组合命令。
描述:
`terraform` 执行命令。
通过组合这些选项,您可以与 AI 一起虚拟地执行命令。
使用示例
展示 Terraform 常见工作流的示例。
初始化 Terraform 项目
terraform init
在开始新的 Terraform 项目或克隆现有项目后运行此命令,以下载所需的提供商。
预览基础设施变更计划
terraform plan
预览配置文件中定义的更改将如何应用于实际基础设施。此步骤不会实际更改资源。
部署或更新基础设施
terraform apply --auto-approve
根据 plan 命令预览的更改,实际应用到云或本地基础设施。`--auto-approve` 选项会跳过确认提示。
销毁基础设施资源
terraform destroy --auto-approve
销毁 Terraform 管理的所有资源。请谨慎使用此命令。
格式化配置文件
terraform fmt
自动将当前目录中的所有 Terraform 配置文件(.tf)格式化为标准样式。
安装
Terraform 通常不包含在大多数 Linux 发行版中,您需要从 HashiCorp 官方网站下载二进制文件进行安装。以下是在 Debian/Ubuntu 系统上的推荐安装方法。
通过 APT 仓库安装(Debian/Ubuntu)
sudo apt-get update && sudo apt-get install -y gnupg software-properties-common curl
curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo apt-key add -
sudo apt-add-repository "deb [arch=amd64] https://apt.releases.hashicorp.com $(lsb_release -cs) main"
sudo apt-get update && sudo apt-get install terraform
添加 HashiCorp 的官方 APT 仓库并安装 Terraform 的方法。此方法便于保持最新版本。
验证安装
安装后,运行以下命令以验证 Terraform 是否已正确安装。
检查版本
terraform -v
提示与注意事项
有效使用 Terraform 并避免潜在问题的提示和注意事项。
主要提示
- 状态文件管理:`terraform.tfstate` 文件记录了基础设施的当前状态,建议安全地管理它,不要直接包含在版本控制系统中。通常使用 S3、Azure Blob Storage、GCS 等远程后端。
- 使用模块:将可重用的基础设施组件创建为模块进行管理,可以提高代码的可读性和可维护性。
- 审查计划:始终使用 `terraform plan` 命令提前审查更改,以防止意外的资源更改或删除。这在生产环境中尤为重要。
- 版本控制:Terraform 配置文件(.tf)必须使用 Git 等版本控制系统进行管理,以跟踪更改历史并促进协作。
- 敏感信息管理:不要在配置文件中直接硬编码 API 密钥、密码等敏感信息,而应使用环境变量、Terraform 变量(tfvars)或 Vault 等秘密管理工具。
注意事项
- 销毁命令(`terraform destroy`)是不可逆的,因此在执行前务必仔细检查,并在必要时执行备份。
- 状态文件损坏:状态文件损坏会导致 Terraform 无法准确了解基础设施的实际状态,从而引发问题。使用远程后端和锁定功能可以降低此风险。
- 版本不匹配:Terraform CLI 版本与提供商版本之间的不匹配可能导致意外行为。建议使用 `.terraform.lock.hcl` 文件固定提供商版本。