50万奖金+官方证书,深圳国际金融科技大赛正式启动,点击报名 了解详情
写点什么

分叉自 Terraform 的 OpenTofu 添加供应商迭代的功能

作者:Matt Saunders

  • 2025-02-21
    北京
  • 本文字数:1441 字

    阅读完需:约 5 分钟

分叉自 Terraform的OpenTofu 添加供应商迭代的功能

OpenTofu OpenTofu 是一年前从 Hashicorp 的 Terraform 分叉(fork)出来的基础设施即代码工具,目前该工具发布了 1.9.0 版本。该版本带来了多项重要的特性,包括通过 for_each 进行供应商迭代的功能,从而能够简化多可用区(multi-zone)和多区域(multi-region)的部署。


根据 OpenTofu 的 “新功能”页面所述,for_each 是一个元参数,可用于模块和任意的资源类型。它会为字符串 map 或集合中的每个条目创建一个实例,允许创建、更新或销毁每个单独的实例。由于该功能对 OpenTofu 的运行方式有很大的改变,所以建议开发人员要谨慎使用,它只能用于静态变量和本地变量,无法用于从其他数据源或资源中获取的变量。


新的-exclude标记允许用户在planapply的操作过程中跳过特定的资源,实际上它与现有的-target选项功能恰好相反。该特性是本次版本发布中得到投票最多的特性请求之一。举个简单的例子,当使用tofu apply -exclude local_file.b运行如下配置时,a.txtc.txt会被创建,而b.txt则不会被创建。



该版本的其他改进还包括更好的提前评估功能,以及加密、AzureRM 和 HTTP 后端的更新。此外,还有性能方面的提升。


在 LinkedIn 的一篇博客文章中,来自 MasterPoint 的 Matt Gowie 对新版本表示了欢迎,但是由于新的 for_each 功能非常强大,他建议大家谨慎使用:


“如果你知道自己正在做什么,并且知道它所带来的后果,那么 [for_each] 可能会成为你的 IaC 工具箱中一个很有意思的补充。”

——Matt Gowie


来自 Datolabs 的 Tomas Daba 在回帖中补充到:


对于那些需要管理较小范围的供应商的人来说,for_each 将会解救他们,比如,OpenStack(管理多个项目)、GitHub(管理多个组织)和 PostgreSQL(管理多个数据库)。很高兴 OpenTofu 添加了这个功能!


Reddit 上的用户对 OpenTofu 独立于 Terraform 的发展轨迹褒贬不一。有人对 OpenTofu 增加了 Terraform 尚未提供的特性而感到高兴,而另一些人则对 OpenTofu 跟不上自分叉 Terraform 以来的变化而感到遗憾。用户“wywywywy”对新 for_each 功能大加赞赏:


“哇,这个特性在 Terraform 中都没有吧?它将大大简化我的代码”。

wywywywy on Reddit


其他用户的评论则认为 for_each 的运行方式与 Terraform Stacks 类似,后者在商用版本的 HCP Terraform 中可用,但是在开源 Terraform 产品中并未提供。用户“aleques-itj”感叹 OpenTofu 中缺少暂存资源,去年 Terraform 就引入了该功能,OpenTofu 的维护者之一“fooallthebar”解释说,由于 AWS 功能仍处于实验阶段,所以尚未添加到 OpenTofu 中。


帖子还介绍了 OpenTofu 的搜索页面现在如何索引 4000 多个供应商和 20000 多个模块的文档,它们每 15 到 30 分钟会更新一次。JetBrains 宣布在其 2024.3 版本中会支持 OpenTofu,其功能包括 OpenTofu 特有的代码自动补全和状态加密检测。


宣布版本发布的新闻稿还强调了 OpenTofu 自去年作为 Terraform 的一个分叉版本创建以来所取得的成功。OpenTofu 项目的注册请求增加了两倍,达到每天 600 多万次,数据传输峰值达到每天 140GB。GitHub 下载量增加了约 30%,达到 150 万次,项目的 GitHub 评星现在已经超过 23000 个。


它的社区参与度很高,49 位贡献者为主仓库提交了 200 多个拉取请求,创建的新问题已超过 150 个,这表明用户群和社区参与很活跃。


OpenTofu 团队目前正专注于开发 OCI 提供商注册表,其工作原型正在开发中。


查看英文原文:


Terraform Fork OpenTofu Adds Provider Iteration and Exclusions(https://www.infoq.com/news/2025/01/opentofu-190/)

2025-02-21 15:009355

评论

发布
暂无评论

【Java技术专题】「原理专题」深入分析Java中finalize方法的作用和底层原理

码界西柚

Java JVM Finalizer 12月月更

非正式全面解析 NebulaGraph 中 Session 管理

NebulaGraph

图数据库 会话管理 session管理

时序引擎架构和实例演练

KaiwuDB

软件测试|HTTPS 的通信

霍格沃兹测试开发学社

使用 ClusterResourceSet 为 Cluster API 集群自动安装 CNI 插件

Se7en

案例分享:硬件敏捷

ShineScrum

Scrum 敏捷开发 TDD 硬件敏捷

说透IO多路复用模型

京东科技开发者

开发 系统 epoll poll Lunix

软件测试简历书写 | 简历中应该如何描述才能体现出软技能的实力 ?

测试人

软件测试 自动化测试 简历 软技能 测试开发

容器安全的三大挑战

SEAL安全

容器安全 12 月 PK 榜

2022-12-28:有n个黑白棋子,它们的一面是黑色,一面是白色, 它们被排成一行,位置0~n-1上。一开始所有的棋子都是黑色向上, 一共有q次操作,每次操作将位置标号在区间[L,R]内的所有棋子翻

福大大架构师每日一题

golang 算法 福大大

2023年内蒙古等保测评公司有哪些?五家还是6家?

行云管家

等保 等保测评 内蒙古

uniapp 在微信小程序中图片宽度显示问题

ModStart

活动预约报名系统怎么做?快来借鉴「苍山徒步之家」的经验做法

天天预约

微信小程序 SaaS 数据统计 预约工具 活动报名

软件测试面试 | 一面试就紧张,怎么办?

霍格沃兹测试开发学社

MVP、原型、概念验证,傻傻分不清楚?

敏捷开发

开发 MVP 原型

信息安全等级测评师证书有效期是多久?谁能告诉一下?

行云管家

等保

Python图像处理丨详解图像去雾处理方法

华为云开发者联盟

Python 人工智能 华为云 12 月 PK 榜

Git之使用GitHub搭建远程仓库

芯动大师

GitHub、 git 学习 代码托管 分支管理 clone代码

Gitea 的邮件通知

HoneyMoose

浅谈权限系统在多利熊业务应用

百度Geek说

百度 权限系统 12 月 PK 榜 多利熊

Tapdata Cloud 场景通关系列: Oracle → MySQL 异构实时同步

tapdata

oracle 异构数据 MySQL 数据库 实时数据 数据同步工具

Java高手速成│Java程序怎样和数据库对话

TiAmo

JDBC 数据库· 12月月更

参与Getaverse早期建设,成为节点验证者!!

Geek_Web3

#区块链# did #Web3

Triple 协议支持 Java 异常回传的设计与实现

Apache Dubbo

Java 开源 微服务 gRPC dubbo

PHP 中类自动加载相关文件分析

ModStart

如何通过Java应用程序将Word转为Excel

在下毛毛雨

Java Excel word 文档 转换

智能低代码平台,驱动企业数字化转型

元年技术洞察

低代码 数字化转型

【MySQL】数据库索引 - 浅谈索引类型

非晓为骁

Go 数据库 索引 MySQL 数据库

多模态交互在数智化营销服中的技术实践

中关村科金

人工智能 算法 全栈 数字化转型 多模态

龙蜥开发者说:众人拾柴火焰高!聊一聊我在社区的所思所想 | 第 14期

OpenAnolis小助手

开发者 开源社区 龙蜥开发者说 LoongArch 架构 红旗软件

架构实战营 模块三作业 外包学生管理系统架构设计

西山薄凉

「架构实战营」

分叉自 Terraform的OpenTofu 添加供应商迭代的功能_编程语言_InfoQ精选文章