TerraVision ist ein CLI-Tool, das Terraform-Code in professionelle Cloud-Architekturdiagramme umwandelt und das Problem löst, das wichtigste Dokument in Cloud-Projekten, das Architekturdokument, auf dem neuesten Stand zu halten. Da High-Velocity-Releases mittlerweile die Norm sind, sind maschinengenerierte Architekturdiagramme genauer, als sich auf das vom Cloud-Architekten gezeichnete Freestyle-Diagramm zu verlassen, das nicht mehr der Realität entspricht. Terravision läuft sicher und zu 100 % clientseitig ohne Abhängigkeit von Terraform oder Zugriff auf Ihre Cloud-Umgebung, um Ihre bedingt erstellten Ressourcen und Variablen dynamisch zu analysieren und eine automatische Visualisierung Ihrer Architektur zu erstellen. Terravision ist als „Docs as Code“ (DaC)-Tool konzipiert, das in Ihre CI/CD-Pipeline eingebunden werden kann, um Architekturdiagramme nach Ihren Build-/Test-/Release-Pipeline-Phasen zu aktualisieren und daneben andere Dokumentgeneratoren wie readthedocs.io zu ergänzen. Es unterstützt derzeit AWS und bald Google und Azure Cloud.
Schalten Sie das um...
in dieses...
Diese Software befindet sich noch in der Alpha-Testphase und der Code wird „WIE BESEHEN“ und OHNE GEWÄHRLEISTUNGEN ODER BEDINGUNGEN JEGLICHER ART, weder ausdrücklich noch stillschweigend, weitergegeben . Die Nutzung erfolgt auf eigene Gefahr.
git clone https://github.com/patrickchugh/terravision.git
cd terravision
und pwd
ausführen.PATH
Wert hinzu, z. B. export PATH=$PATH:/Users/<PATH TO TERRAVISION>
damit Sie ihn von überall aus ausführen können. <PATH TO TERRAVISION>
wäre die Ausgabe von Zeile 3.cd terravision && pip install -r requirements.txt
chmod +x terravision
ausführbar istterravision
aus und geben Sie Ihre Terraform-Quelldateien im folgenden Format an: $ terravision draw --source ~ /src/my-terraform-code
Für Terraform-Stacks mit Arbeitsbereichen können Sie den Parameter --workspace
verwenden:
$ terraform draw --source ~ /src/my-terraform-code --workspace development
Für Terraform-Quellcode in einem Git-Repo können Sie auch das Formular verwenden:
$ terravision draw --source https://github.com/your-repo/terraform-examples.git
Verwenden Sie das //
Zeichen für Unterordner in Git-Repos, wenn sich der gewünschte Code in einer Ordnerhierarchie befindet.
$ terravision draw --source https://github.com/your-repo/terraform-examples.git//mysubfolder/secondfolder/
Kein automatisch generiertes Diagramm wird alle benötigten Details enthalten, im besten Fall bringt es Sie zu 80–90 % dorthin. Um benutzerdefinierte Anmerkungen wie einen Hauptdiagrammtitel, zusätzliche Beschriftungen auf Pfeilen oder zusätzliche außerhalb Ihres Terraform erstellte Ressourcen hinzuzufügen, fügen Sie eine terravision.yml
Datei in den Quellcodeordner ein. Diese wird dann automatisch geladen. Alternativ können Sie einen Pfad zur Anmerkungsdatei als Parameter für Terravision angeben.
terravision --source https://github.com/your-repo/terraform-examples.git --annotate /Users/me/MyDocuments/annotations.yml
Die .yml-Datei ist eine standardmäßige YAML-Konfigurationsdatei, die dem folgenden Beispiel ähnelt und eine oder mehrere Überschriften namens title
, connect
“, disconnect
, add
, remove
oder update
aufweist. Die Knotennamen folgen den gleichen Konventionen wie Terraform-Ressourcennamen https://registry.terraform.io/providers/hashicorp/aws/latest/docs und unterstützen Platzhalter. Sie können jeder TF-Ressource eine benutzerdefinierte Beschriftung hinzufügen, indem Sie die Attribute der Ressource ändern und das label
hinzufügen (existiert in Terraform nicht). Für Linien/Verbindungen können Sie die Ressourcenattribute ändern, indem Sie terravision-spezifische edge_labels
hinzufügen, um der Verbindungslinie zu einem bestimmten Ressourcenknoten Text hinzuzufügen. Siehe das Beispiel unten:
format : 0.1
# Main Diagram heading
title : Serverless Wordpress Site
# Draw new connection lines that are not apparent from the Terraforms
connect :
aws_rds_cluster.this :
- aws_ssm_parameter.db_master_user : Retrieve credentials from SSM
# Remove connections between nodes that are currently shown
disconnect :
# Wildcards mean these disconnections apply to any cloudwatch type resource called logs
aws_cloudwatch*.logs :
- aws_ecs_service.this
- aws_ecs_cluster.this
# Delete the following nodes
remove :
- aws_iam_role.task_execution_role
# Add the following nodes
add :
aws_subnet.another_one :
# Specify Terraform attributes for a resource like this
cidr_block : " 123.123.1.1 "
# Modify attributes of existing node
update :
aws_ecs_service.this :
# Add custom labels to the connection lines that already exist between ECS->RDS
edge_labels :
- aws_rds_cluster.this : Database Queries
# Wildcards save you listing multiple resources of the same type. This edge label is added to all CF->ACM connections.
aws_cloudfront* :
edge_labels :
- aws_acm_certificate.this : SSL Cert
# Add a custom label to a resource node. Overrides default label
aws_ecs_service.this :
label : " My Custom Label "
Geben Sie terravision --help
ein, um eine vollständige Befehlsliste oder Hilfe zu einem bestimmten Befehl zu erhalten