- in additional to the design phase, diagrams can aslo be used for analysis and monitoring the current architecture.
- to do that, we need to export the 'metadata' from other sources, e.g. terraform, aws cli, etc. then generate the diagrams.
diagrams-exporters export the metadata from existing tools, and generate the diagrams.
https://github.com/hashicorp/learn-terraform-no-code-provisioning
https://github.com/hashicorp/learn-terraform-provision-eks-cluster
https://github.com/hashicorp/learn-terraform-multicloud-kubernetes-eks
- depends on the patterns in diagrams-patterns (e.g. vpc with igw, subnet and nat)
Install the package:
pipx install diagrams-exporters
Exectute the following command in your terraform workspace, it will generate terraform graph and export to Diagrams.
diagrams-exporters terraform
# use -d to specify the output directory/file
diagrams-exporters terraform -o diagrams-exported
diagrams-exporters terraform -o dist/diagrams-exported
If you have existing .dot file
diagrams-exporters dot -f existing.dot
diagrams-exporters dot -f existing.dot -o diagrams-exported
diagrams-exporters dot -f existing.dot -o dist/diagrams-exported
Currently, the diagrams-patterns and diagrams-exporters are built as 'diagrams'-extensions. But since the diagrams is inactive, introducing new tools is a necessary step, e.g. d2.
At that time, the diagrams-patterns should be a standalone tool, which provide a standard DSL to describe the common patterns in cloud architecture (or other kinds of diagrams). Then, you can translate the DSL to different tools, e.g. diagrams, d2, etc.
The diagrams-exporters plays another role to facilitate with productive tools, e.g. terraform, aws cli, etc. It read the metadata, convert to DSL, then generate the diagrams.
A possible structure is:
flowchart BT
subgraph diagram-exporters
terraform-exporter
awscli-exporter
kubectl-exporter
end
subgraph diagrams-patterns
subgraph common-patterns
c4-pattern
layer-arch-pattern
end
subgraph cloud-patterns
aws-pattern
azure-pattern
end
subgraph dsl
dsl-parser
dsl-to-diagrams
dsl-to-d2
dsl-to-mermaid
end
end
diagrams-patterns --> diagram-exporters
diagrams --> diagrams-patterns
d2 --> diagrams-patterns
plantuml --> diagrams-patterns
graphviz --> diagrams
graphviz --> d2
plantuml
-
graphviz & dot
-
d2
-
read tfstate and generate graph
-
read aws cli and generate graph
-
other terraform interesting tools