mcpField
T
terraform

terraform

github.com/alphaonedev云与 DevOps43 次安装
代码仓库

关于 terraform

Terraform 是一款命令行工具,通过声明式 HCL 文件定义和配置基础设施,适用于以可重复、可版本控制的配置管理云资源的团队,并提供服务提供商、模块复用和状态跟踪。

主要功能

  1. 01使用 HCL 声明基础设施
  2. 02支持云服务提供商
  3. 03本地或远程状态管理
  4. 04可复用配置模块
  5. 05变量与内置函数

适用场景

  1. 01根据配置部署云资源
  2. 02管理不同环境的基础设施
  3. 03在 CI/CD 中审查基础设施变更

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/alphaonedev/openclaw-graph --skill terraform

安装后在 Claude Code 中输入/terraform确认已加载。

详细介绍

terraform

用途

Terraform 是一款命令行工具,可使用声明式 HCL(HashiCorp 配置语言)文件以代码形式定义和配置基础设施。它支持用户以可重复、可进行版本控制的方式创建、更新和销毁云资源。

适用场景

在管理多云环境、自动化基础设施部署,或需要对 VM、网络或数据库等资源使用版本控制的 IaC 时,可使用 Terraform。在 AWS、Azure 或 GCP 配置场景中,尤其是动态扩缩容、灾难恢复设置或 CI/CD 流水线等需要确保一致性的情况下,都适合使用 Terraform。

主要功能

  • 使用声明式 HCL 语法定义资源,例如:resource "aws_instance" "example" { ami = "ami-123456" instance_type = "t2.micro" }。
  • 支持 100 多项服务;可通过 provider "aws" { region = "us-west-2" } 等代码块进行配置。
  • 通过本地文件或远程后端(例如 S3)管理状态,以跟踪资源变更。
  • 通过复用模块组合配置;使用 module "vpc" { source = "./modules/vpc" } 导入模块。
  • 支持变量插值和函数,例如使用 count 循环,或使用 templatefile 生成动态配置。

使用模式

要使用 Terraform,首先编写 HCL 文件(例如 main.tf)来定义资源和提供程序。使用 terraform init 初始化工作区,通过 terraform plan 查看变更,再使用 terraform apply 应用变更。要实现自动化,可将命令封装在脚本中,并使用环境变量存储密钥。务必在 Git 中对 .tf 文件进行版本控制。对于多环境设置,可使用工作区:运行 terraform workspace new dev,然后使用 terraform workspace select dev 切换。

常用命令/API

通过 CLI 运行 Terraform;常用命令包括:

  • terraform init:下载提供程序和模块;使用 -upgrade 更新依赖项。
  • terraform plan -out=plan.tfplan -var="instance_type=t2.medium":生成执行计划;通过标志或文件指定变量。
  • terraform apply plan.tfplan:应用计划;在非交互式运行中添加 -auto-approve。
  • terraform destroy -target=aws_instance.example:销毁指定资源;谨慎使用 -force。 如需进行 API 集成,可使用 Terraform 的远程后端或 Terraform Cloud API(例如,通过 POST 请求向 https://app.terraform.io/api/v2/runs 提交运行请求),但需要通过 $TERRAFORM_TOKEN 进行身份验证。将提供程序凭据设置为环境变量,例如 export AWS_ACCESS_KEY_ID=$AWS_API_KEY 和 export AWS_SECRET_ACCESS_KEY=$AWS_SECRET_KEY。

集成说明

通过在工作流 YAML 中添加步骤,将 Terraform 与 GitHub Actions 或 Jenkins 等 CI/CD 工具集成,例如:

- name: Terraform Init
  run: terraform init
- name: Terraform Apply
  run: terraform apply -auto-approve

使用远程状态后端进行协作,例如在 main.tf 中通过 terraform { backend "s3" { bucket = "my-terraform-state" key = "path/to/state" region = "us-west-2" } } 进行配置。对于密钥,可通过环境变量(例如 $AWS_ACCESS_KEY_ID)或 Vault 等工具注入。确保在 .tf 文件中固定提供程序版本,例如 terraform { required_providers { aws = { source = "hashicorp/aws" version = "~> 4.0" } } },以避免不兼容的变更。

错误处理

先运行 terraform validate 检查 HCL 语法,并修复缺少括号或属性无效等问题,以此处理错误。对于提供程序错误,请验证凭据(例如检查是否已设置 $AWS_ACCESS_KEY_ID),并使用 terraform plan -detailed-exitcode 获取具体代码(例如,错误时返回 2)。常见做法:在脚本中使用 try-catch 代码块封装命令,例如:

try {
  terraform apply
} catch {
  echo "Error: Apply failed; check logs for details"
}

使用 TF_LOG=DEBUG terraform apply 记录提供程序交互以进行调试,并使用 terraform state pull 检查状态文件是否存在不一致。

使用示例

  1. 创建 AWS EC2 实例:在 main.tf 中定义 resource "aws_instance" "web" { ami = "ami-0c55b159cbfafe1f0" instance_type = "t2.micro" tags = { Name = "web-server" } }。然后运行 terraform init,接着运行 terraform apply -auto-approve 来预配实例。
  2. 管理简单的 VPC:在 main.tf 中添加 resource "aws_vpc" "main" { cidr_block = "10.0.0.0/16" } 和 resource "aws_subnet" "subnet1" { vpc_id = aws_vpc.main.id cidr_block = "10.0.1.0/24" }。运行 terraform plan 进行检查,然后运行 terraform apply 进行部署。

图关系

  • 已连接到集群:devops-sre
  • 相关标签:terraform、iac、devops
  • 与其他技能的关联:通过 devops-sre(例如,用于配置管理的 ansible),以及 pulumi 或 cloudformation 等与 iac 相关的工具,可作为替代预配方式。

评论

支持 Markdown