报名参加CloudWeGo黑客松,奖金直推双丰收! 了解详情
写点什么

分叉自 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:009061

评论

发布
暂无评论

QQ截图图片不够清晰解决方法

源字节1号

微信小程序 开源 软件开发

照片肖像美容软件:ON1 Portrait AI 2023.1 激活版

真大的脸盆

Mac Mac 软件 照片处理工具 肖像美容软件

狼来了

俞凡

人工智能

初识 Flutter 的绘图组件 — CustomPaint

岛上码农

flutter ios 安卓 移动端开发 跨平台开发

通过 Amazon Managed Microsoft Active Directory 运行混合 Active Directory 服务

亚马逊云科技 (Amazon Web Services)

Amazon

“找工难&金三银四”,关于面试,你需要知道的这些事

IT学习日记

面试 Java、 找工作 简历模板

三天吃透MySQL面试八股文

程序员大彬

MySQL java面试

软件测试/测试开发丨app自动化测试之Andriod WebView如何测试

测试人

软件测试 自动化测试 测试开发

SaaS 软件搞定客户的关键环节分析

产品海豚湾

产品经理 SaaS 产品运营 B 端产品 互联网产品

Spring中PropertyPlaceholderConfigurer替换占位符的问题

石臻臻的杂货铺

spring-boot

隐式等待、显示等待和强制等待

测吧(北京)科技有限公司

测试

软件测试/测试开发丨app自动化之如何参数化用例

测试人

软件测试 自动化测试 测试开发

有一种焦虑叫ChatGPT(62/100)

hackstoic

AI AIGC ChatGPT

关于chatGPT是否会干掉程序员的一次专业评估

深清秋

ChatGPT 程序员发展

如何编写测试用例?

测吧(北京)科技有限公司

测试

华为P系列,雪夜梅花开,似是故人来

脑极体

华为

电商秒杀系统

Geek_7d539e

Go 语言 new 和 make 关键字的区别

AlwaysBeta

面试 Go 语言

湃方科技联合CnosDB助力旋转类机械预测性维护

CnosDB

数据库 开源 时序数据库 CnosDB

解决 Font '宋体' is not available to the JVM

源字节1号

微信小程序 开源 软件开发

设计模式之美––依赖反转

GalaxyCreater

设计模式

Gestures(手势)

芯动大师

Activity 手势 gesturelistener

面试突击:MVCC 和间隙锁有什么区别?

王磊

java面试

PyTorch 深度学习实战 | 知识图谱嵌入结合图路径的推荐 RippleNet

TiAmo

深度学习 Ripplenet

adb的常用命令

测吧(北京)科技有限公司

测试

面试官:如何保证接口幂等性?一口气说了9种方法!

程序员大彬

Java 接口幂等

别急着给中国版ChatGPT唱赞歌:“追风者”无缘“星辰大海”

Alter

百度 大模型 ChatGPT 文心一言

【JVM盲点补漏系列】「并发编程的难题和挑战」深入理解JMM及JVM内存模型知识体系机制(1)

码界西柚

Java JVM 3月月更

机器学习算法(六)基于天气数据集的XGBoost分类预测

汀丶人工智能

数据挖掘 数据分析 XGBoost

分享一个修改了xml文件再也不用重启的项目mybatis-xmlrealod

越长大越悲伤

Java 开源 Spring Boot mybatis 开源项目

华为都入场做ERP了,国产ERP困局如何破解?

陈飞

分布式数据库 国产化 ERP SaaS 平台 PaaS平台

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