TerraVision est un outil CLI qui convertit le code Terraform en diagrammes d'architecture cloud professionnels et résout le problème de la mise à jour du document le plus important des projets cloud, le document d'architecture. Les versions à haute vitesse étant désormais la norme, les diagrammes d'architecture générés par la machine sont plus précis que de s'appuyer sur le diagramme libre dessiné par l'architecte cloud qui ne correspond plus à la réalité. Terravision fonctionne en toute sécurité 100 % côté client, sans aucune dépendance à Terraform ni accès à votre environnement Cloud, pour analyser dynamiquement vos ressources et variables créées de manière conditionnelle et générer un visuel automatique de votre architecture. Terravision est conçu pour être un outil « Docs as Code » (DaC) qui peut être inclus dans votre pipeline CI/CD pour mettre à jour les diagrammes d'architecture après vos phases de pipeline de construction/test/version et compléter d'autres générateurs de documents comme readthedocs.io à côté. Il prend actuellement en charge AWS et bientôt le cloud Google et Azure.
Tournez ça...
dans ça...
Ce logiciel est encore en test alpha et le code est partagé « TEL QUEL », SANS GARANTIE NI CONDITIONS D'AUCUNE SORTE , expresses ou implicites. Utilisez à vos propres risques.
git clone https://github.com/patrickchugh/terravision.git
cd terravision
et en faisant pwd
.PATH
, par exemple export PATH=$PATH:/Users/<PATH TO TERRAVISION>
afin de pouvoir l'exécuter de n'importe où. <PATH TO TERRAVISION>
serait la sortie de la ligne 3.cd terravision && pip install -r requirements.txt
chmod +x terravision
terravision
et spécifiez vos fichiers sources Terraform au format : $ terravision draw --source ~ /src/my-terraform-code
Pour les piles Terraform avec des espaces de travail, vous pouvez utiliser le paramètre --workspace
:
$ terraform draw --source ~ /src/my-terraform-code --workspace development
Pour le code source Terraform dans un dépôt Git, vous pouvez également utiliser le formulaire :
$ terravision draw --source https://github.com/your-repo/terraform-examples.git
Utilisez le caractère //
pour les sous-dossiers dans les dépôts Git si le code souhaité se trouve dans une hiérarchie de dossiers.
$ terravision draw --source https://github.com/your-repo/terraform-examples.git//mysubfolder/secondfolder/
Aucun diagramme généré automatiquement ne contiendra tous les détails dont vous avez besoin, au mieux, il vous permettra d'atteindre 80 à 90 % du chemin. Pour ajouter des annotations personnalisées telles qu'un titre de diagramme principal, des étiquettes supplémentaires sur les flèches ou des ressources supplémentaires créées en dehors de votre Terraform, incluez un fichier terravision.yml
dans le dossier du code source et il sera automatiquement chargé. Vous pouvez également spécifier un chemin d'accès au fichier d'annotations comme paramètre de terravision.
terravision --source https://github.com/your-repo/terraform-examples.git --annotate /Users/me/MyDocuments/annotations.yml
Le fichier .yml est un fichier de configuration YAML standard similaire à l'exemple ci-dessous avec un ou plusieurs en-têtes appelés title
, connect
, disconnect
, add
, remove
ou update
. Les noms de nœuds suivent les mêmes conventions que les noms de ressources Terraform https://registry.terraform.io/providers/hashicorp/aws/latest/docs et prennent en charge les caractères génériques. Vous pouvez ajouter une étiquette personnalisée à n'importe quelle ressource TF en modifiant les attributs de la ressource et en ajoutant l'attribut label
(n'existe pas dans Terraform). Pour les lignes/connexions, vous pouvez modifier les attributs de ressource en ajoutant edge_labels
spécifiques à Terravision pour ajouter du texte à la ligne de connexion à un nœud de ressource spécifique. Voir l'exemple ci-dessous :
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 "
Tapez terravision --help
pour la liste complète des commandes ou pour obtenir de l'aide sur une commande spécifique