我对TERRAFORM配置语言的想法

发明一种配置语言是软件开发中最常见的反模式之一。

每当开发人员创建新工具时,开始时并没有很多功能,一些参数或一些简单的配置文件可让您执行所需的操作。 随着工具的发展,配置变得越来越复杂,并逐渐演变成某种语言(称其为配置语法或领域特定语言)。

地形也不例外

我最近开始使用Terraform。 我很激动,我终于能够以代码的形式管理我的基础架构,但是当我发现Terraform配置的语法(也称为HashiCorp配置语言(HCL))时,它很快就发生了变化。

现实情况是,主要受json启发的语法非常有限。 这使得很难在没有一直复制/粘贴的情况下轻松实现事情。

但是为什么他们选择以这种方式实施呢?

  1. Terraform语法仅是描述性的:您描述资源,Terraform负责其他所有内容(创建,更新,依赖项),因此不需要真正的语言…… 很差! 即使是构建对象的描述图,也可以使用真实的语言更有效地组织,测试和重用代码。
  2. 如果他们选择了现有的语言(例如python或groovy),则大多数开发人员都会拒绝使用它。 SAD但TRUE 。 也许最好的解决方案就是像AWS的SDK一样支持多种语言。

当使用任何实际语言都如此容易时,您最终会用可怕的骇客实现循环,逻辑或可重用功能。

我的结论是:

我不能否认Terraform是一个功能强大的工具,但绝对不会因为它不是代码而将其称为“ 基础结构即代码”。

对Terraform有任何疑问吗? 伸出手 FXB乐于为您提供更多相关信息,并在此过程中教您一些莎莎酱的步骤。