数澈软件 Seal 首席架构师李平辉提交的演讲议题“Alias Terraform=Tofu. Job’s Done, Now What?”入选 KubeCon EU 同场活动 OpenTofu Day,本文为演讲实录。
大家好,我是 Lawrence,是 Seal 的首席架构师。今天将由我为大家带来 Lightening Talk。在 Seal,我们研发了一款开源软件 Walrus。通过 Walrus,用户能够构建适用于多云的应用程序抽象。在 Walrus 上我们还使用了 Terraform 这样的基础设施即代码(IaC)技术进行资源配置,让运维团队能够逐步且顺利过渡到开发者自助服务。我们从 OpenTofu GA 就对其开始进行验证和集成。所以只要你熟悉 Terraform,那么从 Terraform 转到 OpenTofu 从 Day1 开始就是一件非常简单的事情。
自 OpenTofu GA 以来已有几个月,这里我快速总结了一下这段时间内 OpenTofu 的综合表现。整体来看 OpenTofu 得到了良好的维护,透明度也很高,例如项目有每周更新,有 TSC(Technical Steering Committee) 摘要,这样用户就可以轻松地跟进或了解项目的进展和方向。此外,OpenTofu 每月有数百次的 commits,这个数量和 Terraform 不相上下。并且 OpenTofu 的文档也非常详尽,包括兼容性承诺、迁移指南和许多其他实用资源。
当问到社区用户迁移到 OpenTofu 的原因,许可证显然成了头等因素。那么除此之外还有其他原因吗?我们一起来看看。
虽然 OpenTofu 从时间上来看是一个非常新的项目,但它完美继承了 Terraform 的功能与特性,因此我们依旧能从 Terraform 过往的一些数据来获取相关经验。这里我将列举一些有意思的数据,这些数据和分析都是公开来源,如果大家感兴趣的话可以 follow 这个 repo (https://github.com/gitlawr/tofucon-2024-talk)。我对 Terraform 在 GitHub 上的 issue,comment 以及 event 的数据进行了简单汇总,这里我主要关注的是增强和建议相关的 issue,而一些和今天演讲主题关联度不太高的因素并未包含在今天的数据展示中。
我们先从一些基本 issue 来看。在 Terraform 中存在时间最久且至今还未解决的 enhancement issue 是什么?这个 issue 要从2016年说起,该 issue 是关于支持 Docker Provision 的。这个 issue 可能在我们日常工作流中并不是很关键或重要,不过看样子还是会长期存在。那么这些 issue 中的回复数量最高是多少呢?答案是1038,而且主要集中在关于在 Terraform 后段配置模块中使用变量。从这个数据我们可以看出用户希望配置语言能够更加灵活。
这里我们根据 Terraform 每个月 open/close enhancement issue 的数量来绘制折线图,可以获得下图的这个趋势。很显然,Terraform 是一个成熟且成功的项目。随着时间的推移,社区的 open issue 数量不断增加。尽管许可证发生变更时用户的呼声和反应很强烈,但实际我们并没有从趋势看到非常明显的影响。
如果按年度汇总这些 issue 数量,我们也可以看到另一个趋势。下图是根据年度 open/close enhancement issue 数量绘制的图。随着 Terraform 变得更加成熟,open issue 对应的数量正在逐步减少,这也就是所谓的技术迭代曲线。
当我们按照这些 issue 的领域或主题来进行标记,便能大致找出 Terraform 的用户们最关心的几个领域:
- 第一个是配置语言和语法,也就是说大多数用户其实是希望有更强大、更具表现力和更灵活的配置语言。
- 第二个则是用户界面和体验,不仅仅是 Terraform,我认为这点对于任何软件的采用都是非常重要的。
- 第三个是状态管理,也是我个人认为 Terraform 系统中最重要的组成部分之一。
其余的还有提供程序框架和与外部工具的集成,例如 CI/CD,以及模型系统等等。这些正是 Terraform 用户以及未来可能成为 OpenTofu 用户在领域中所期望和关注的焦点。
随后我尝试对这些 open issue 进行分析,发现和上述三点相关的 issue 常常被标记为负面。或许 OpenTofu Committee 能以此作为参考,浏览这些标记为负面的 issue,看看有什么问题是尚未解决的,是否可以从这些信息中获取解决方案的灵感。当然这是我的一些拙见,欢迎大家更加深入的探讨。
总之,OpenTofu 是个充满希望的项目,让我们一起帮助它发展得更好。谢谢大家!