TerraVision é uma ferramenta CLI que converte o código Terraform em diagramas profissionais de arquitetura de nuvem e resolve o problema de manter atualizado o documento mais importante em projetos de nuvem, o documento de arquitetura. Com lançamentos de alta velocidade sendo a norma agora, os diagramas de arquitetura gerados por máquina são mais precisos do que confiar no diagrama de estilo livre desenhado pelo arquiteto da nuvem, que não corresponde mais à realidade. O Terravision executa 100% do lado do cliente com segurança, sem qualquer dependência do Terraform ou acesso ao seu ambiente Cloud, para analisar dinamicamente seus recursos e variáveis criados condicionalmente e gerar um visual automático de sua arquitetura. Terravision foi projetado para ser uma ferramenta 'Docs as Code' (DaC) que pode ser incluída em seu pipeline de CI/CD para atualizar diagramas de arquitetura após as fases de construção/teste/lançamento do pipeline e complementar outros geradores de documentos como readthedocs.io junto com ele. Atualmente suporta AWS e em breve nuvem Google e Azure.
Vire isso...
nisso...
Este software ainda está em teste alfa e o código é compartilhado "COMO ESTÁ", SEM GARANTIAS OU CONDIÇÕES DE QUALQUER TIPO , expressas ou implícitas. Use por sua conta e risco.
git clone https://github.com/patrickchugh/terravision.git
cd terravision
e fazendo pwd
.PATH
, por exemplo, export PATH=$PATH:/Users/<PATH TO TERRAVISION>
para que você possa executá-lo de qualquer lugar. <PATH TO TERRAVISION>
seria a saída da linha 3.cd terravision && pip install -r requirements.txt
chmod +x terravision
terravision
e especifique seus arquivos de origem do Terraform no formato: $ terravision draw --source ~ /src/my-terraform-code
Para pilhas do Terraform com espaços de trabalho, você pode usar o parâmetro --workspace
:
$ terraform draw --source ~ /src/my-terraform-code --workspace development
Para o código-fonte do Terraform em um repositório Git, você também pode usar o formulário:
$ terravision draw --source https://github.com/your-repo/terraform-examples.git
Use o caractere //
para subpastas nos repositórios Git se o código desejado estiver em uma hierarquia de pastas.
$ terravision draw --source https://github.com/your-repo/terraform-examples.git//mysubfolder/secondfolder/
Nenhum diagrama gerado automaticamente terá todos os detalhes que você precisa; na melhor das hipóteses, você chegará de 80 a 90% do caminho até lá. Para adicionar anotações personalizadas, como título de diagrama principal, rótulos adicionais em setas ou recursos adicionais criados fora do Terraform, inclua um arquivo terravision.yml
na pasta do código-fonte e ele será carregado automaticamente. Alternativamente, especifique um caminho para o arquivo de anotações como parâmetro para terravision.
terravision --source https://github.com/your-repo/terraform-examples.git --annotate /Users/me/MyDocuments/annotations.yml
O arquivo .yml é um arquivo de configuração YAML padrão semelhante ao exemplo abaixo com um ou mais títulos chamados title
, connect
, disconnect
, add
, remove
ou update
. Os nomes dos nós seguem as mesmas convenções dos nomes de recursos do Terraform https://registry.terraform.io/providers/hashicorp/aws/latest/docs e suportam curingas. Você pode adicionar um rótulo personalizado a qualquer recurso TF modificando os atributos do recurso e adicionando o atributo label
(não existe no Terraform). Para linhas/conexões, você pode modificar os atributos do recurso adicionando edge_labels
específicos do terravision para adicionar texto à linha de conexão para um nó de recurso específico. Veja o exemplo abaixo:
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 "
Digite terravision --help
para obter uma lista completa de comandos ou para obter ajuda com um comando específico