mcpField
O
opentofu

opentofu

github.com/oakoss云与 DevOps20141 次安装10 周前更新
代码仓库

关于 opentofu

opentofu 是使用 HCL 声明式管理云基础设施的开源 IaC 技能,面向基础设施工程和云资源配置。它涵盖计划、部署、状态管理与加密,也包含 Pulumi 的 IaC 模式参考。

主要功能

  1. 01使用 HCL 声明式管理基础设施
  2. 02规划、应用和销毁资源
  3. 03管理远程状态与工作区
  4. 04通过模块复用基础设施配置
  5. 05参考 Pulumi 项目与自动化模式

适用场景

  1. 01配置多云资源
  2. 02为不同环境隔离状态
  3. 03将现有资源纳入管理
  4. 04在 CI/CD 中审核基础设施变更

安装

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

$npx skills add https://github.com/oakoss/agent-skills --skill opentofu

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

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
cicd-integration.md
hcl-fundamentals.md
import-migration.md
modules.md
pulumi-sdk.md
pulumi-stacks.md
state-encryption.md
state-management.md
variables-outputs.md
workspaces.md

详细介绍

OpenTofu

概述

OpenTofu 是一款开源的基础设施即代码工具,使用 HCL(HashiCorp Configuration Language)以声明式方式管理云基础设施。它是由社区驱动的 Terraform 分支,完全兼容现有的 Terraform 提供程序和模块,并提供原生状态加密等独有功能。Pulumi 则提供了另一种 IaC 方法:使用通用编程语言(TypeScript、Python、Go),而非 HCL。

适用场景: 以声明式方式管理云基础设施、配置多云资源、确保不同环境中的基础设施一致性、加密静态存储的状态(OpenTofu)、使用熟悉的编程语言实现 IaC(Pulumi)。

不适用场景: 更适合使用命令行工具的一次性脚本、应用层配置管理(使用 Ansible/Chef)、容器编排逻辑(使用 Kubernetes 清单)、简单的静态托管(使用平台原生工具)。

快速参考

模式工具 / 命令要点
初始化项目tofu init下载提供程序并初始化后端
预览更改tofu plan显示差异,但不应用更改
应用更改tofu apply配置 / 更新资源
销毁资源tofu destroy拆除受管理的基础设施
导入资源tofu import <addr> <id>将现有资源纳入管理
状态加密terraform.encryption blockOpenTofu 独有,使用密钥提供程序和 AES-GCM
远程后端backend "s3" / backend "gcs"将状态存储在云存储中并启用锁定
工作区tofu workspace new <name>为每个环境隔离状态
使用模块module "name" { source = "..." }可复用的基础设施组件
输出值output "name" { value = ... }为其他配置或 CI 提供值
变量文件terraform.tfvars / -var-file覆盖特定环境的变量
创建 Pulumi 项目pulumi new typescript搭建 TypeScript IaC 项目
Pulumi 预览pulumi preview显示计划的更改
Pulumi 部署pulumi up配置 / 更新资源
Pulumi 配置pulumi config set key value作用于堆栈的配置
Pulumi 密钥pulumi config set --secret key val加密的配置值
Pulumi 堆栈pulumi stack select <name>在不同环境之间切换
自动化 APILocalWorkspace.createOrSelectStack()以编程方式管理堆栈

常见错误

错误正确做法
在团队环境中将状态存储在本地配置远程后端(S3、GCS、Azure Blob)并启用状态锁定
在 HCL 中硬编码提供商凭据使用环境变量或提供商专属的身份验证链
未检查计划就运行 tofu apply先运行 tofu plan -out=plan.tfplan,再运行 tofu apply plan.tfplan
手动编辑状态使用 tofu state mv、tofu state rm 或 tofu import
忽略 .terraform.lock.hcl提交锁文件,确保提供商版本可复现
对复杂的条件资源使用 count优先使用映射形式的 for_each,以确保资源寻址稳定
所有环境共用一个工作区为每个环境使用独立工作区或后端配置
将密钥放入 terraform.tfvars使用 sensitive = true 变量、保险库或环境变量
Pulumi:在组件类之外创建资源将相关资源封装在 ComponentResource 中以便复用
Pulumi:未等待异步操作完成确保所有资源操作完成后再导出堆栈
在 CI/CD 中跳过 tofu plan始终先生成计划,并在管道中要求审批后再应用
未谨慎使用 -target优先使用完整计划;-target 可能导致状态不一致

委派

  • 基础设施模式探索:使用 Explore Agent
  • IaC 代码审查:使用 Task Agent
  • 漂移检测分析:使用 Task Agent

如果有 amazon-web-services 技能,请将 AWS 资源模式委派给它。 如果有 docker 技能,请将容器基础设施模式委派给它。 如果有 github-actions 技能,请将 CI/CD 管道模式委派给它。

参考资料

评论

支持 Markdown