使用Go和HCL构建您自己的DSL


DSL 代表领域特定语言。
Kubernetes、Docker compose、Jenkins CI、Gitlab CI 或 Ansible 等工具的主要目标是可以通过配置自定义它们的行为。它们就像一个黑匣子,根据输入(YAML/JSON 描述符)会产生不同的输出。
HCL 代表 HashiCorp 配置语言,它比 JSON 或 YAML 更强大,因为它提供了机制。实现动态配置文件,我们稍后会看到。HCL 的一些优点列举如下:

  • 即使对于非技术人员来说,它也很容易阅读(和编写)。
  • 正如我们将要做的那样,实现自定义 DSL 并不是火箭科学,因为解析、验证和很多东西都是开箱即用的。
  • 已经提供了一堆现有的功能。
  • 像 HashiCorp 这样的知名公司参与了这个项目,Terraform、Nomad 和 Vault 等伟大的产品都使用了 HCL。这意味着 Ops 社区习惯于使用这种语法。

另一方面,要实现基于 HCL 的自定义 DSL,您将需要了解 Go。
详细点击原文