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

banq發表於2022-02-21

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。

詳細點選原文

相關文章