Terraform 資源圖視覺化工具總覽
由於 Terraform 使用的是聲明式的語言描述最終資源狀態,所以,就能 低成本 的實作資源的狀態視覺化。
以下幾種開源工具,能幫助你實現視覺化資源。
1. Terraform graph 指令
graph 是 Terraform 的子指令。透過它,你可以產生使用 DOT 格式的資源圖。命令如下:
terraform graph | dot -Tsvg > graph.svg
除了在命令列裡使用,你還可以將產生 dot 檔案整合你的 Pipeline 中,以方便 code review。
這裡介紹一個根據 dot 語言產生圖的線上網站:https://dreampuf.github.io/GraphvizOnline/
此工具依賴: tfstate 或 HCL
官方文件: https://developer.hashicorp.com/terraform/cli/commands/graph
2. Blast radius
Blast radius 根據 Terraform 產生的依賴圖產生可互動的圖,基於 Graphviz 和 Python 3.7。你可以透過搜尋或點擊你感興趣的資源,它可以突出顯示資源依賴圖。
此工具依賴: HCL
網址: https://github.com/28mm/blast-radius
3. Terraform Visual
Terraform Visual 根據 Terraform plan 檔案產生視覺化介面。
範例網址: https://hieven.github.io/examples/aws-s3
產生 JSON 格式的 plan 的方法:
$ terraform plan -out=plan.out
$ terraform show -json plan.out > plan.json
此工具依賴: Terraform plan 檔案
4. Inframap
Inframap 透過讀取 tfstate 或 HCL 檔案產生資源圖。
此工具依賴: tfstate 或 HCL
網址: https://github.com/cycloidio/inframap
5. Rover
Rover 基於 Go 和 Vue 實現,Terraform 的可視化。
此工具依賴: Terraform plan 檔案
網址: https://github.com/im2nguyen/rover
工具比較總覽
| 工具 | 輸入來源 | 特色 |
|---|---|---|
| Terraform graph | tfstate / HCL | 基礎指令,輸出 DOT 格式 |
| Blast radius | HCL | 可互動搜尋,依賴圖 highlight |
| Terraform Visual | plan 檔案 | 視覺化介面,直觀呈現 |
| Inframap | tfstate / HCL | 簡潔風格,多雲支援 |
| Rover | plan 檔案 | Web 介面,現代化 UI |
後記
如果 CMDB 只會被動從已經部署好的資源中獲取信息,才能建立出整個資源圖,那麼,可以肯定的是,它的成本是巨大的,且不準確的。
而從現成的配置中獲取信息,並建立資源圖,那麼,成本是相對低得多的,而且準確的。因為開源世��,會免費給你用和二次開發。只要這些配置是聲明式的。Terraform 的生態,就是很好的例子。

發佈留言