TerraVision adalah alat CLI yang mengubah kode Terraform menjadi Diagram Arsitektur Cloud Profesional dan memecahkan masalah dalam menjaga dokumen terpenting dalam proyek cloud, dokumen arsitektur, tetap mutakhir. Dengan rilis kecepatan tinggi yang menjadi norma sekarang, diagram arsitektur yang dihasilkan mesin lebih akurat daripada mengandalkan diagram gaya bebas yang digambar oleh arsitek cloud yang tidak lagi sesuai dengan kenyataan. Terravision dengan aman menjalankan 100% Sisi Klien tanpa ketergantungan apa pun pada Terraform atau akses ke lingkungan Cloud Anda, untuk secara dinamis mengurai sumber daya dan variabel yang dibuat secara kondisional dan menghasilkan visual otomatis arsitektur Anda. Terravision dirancang untuk menjadi alat 'Docs as Code' (DaC) yang dapat disertakan dalam pipeline CI/CD Anda untuk memperbarui diagram arsitektur setelah fase pipeline build/test/release dan melengkapi pembuat dokumen lain seperti readthedocs.io di sampingnya. Saat ini Mendukung AWS dan segera Google dan Azure cloud.
Putar ini...
ke dalam ini...
Perangkat lunak ini masih dalam pengujian alfa dan kode dibagikan "APA ADANYA", TANPA JAMINAN ATAU KETENTUAN APAPUN , baik tersurat maupun tersirat. Gunakan dengan risiko Anda sendiri.
git clone https://github.com/patrickchugh/terravision.git
cd terravision
dan melakukan pwd
.PATH
Anda misalnya export PATH=$PATH:/Users/<PATH TO TERRAVISION>
sehingga Anda dapat menjalankannya dari mana saja. <PATH TO TERRAVISION>
akan menjadi output dari baris 3.cd terravision && pip install -r requirements.txt
chmod +x terravision
terravision
dan tentukan file sumber Terraform Anda dalam format: $ terravision draw --source ~ /src/my-terraform-code
Untuk tumpukan Terraform dengan ruang kerja, Anda dapat menggunakan parameter --workspace
:
$ terraform draw --source ~ /src/my-terraform-code --workspace development
Untuk kode sumber Terraform di repo Git Anda juga dapat menggunakan formulir:
$ terravision draw --source https://github.com/your-repo/terraform-examples.git
Gunakan karakter //
untuk subfolder dalam repo Git jika kode yang Anda inginkan berada di bawah hierarki folder.
$ terravision draw --source https://github.com/your-repo/terraform-examples.git//mysubfolder/secondfolder/
Tidak ada diagram yang dibuat secara otomatis yang memiliki semua detail yang Anda butuhkan, paling banter diagram tersebut akan membantu Anda mencapai 80-90%. Untuk menambahkan anotasi khusus seperti judul diagram utama, label tambahan pada panah, atau sumber daya tambahan yang dibuat di luar Terraform Anda, sertakan file terravision.yml
di folder kode sumber dan file tersebut akan dimuat secara otomatis. Alternatifnya, tentukan jalur ke file anotasi sebagai parameter terravision.
terravision --source https://github.com/your-repo/terraform-examples.git --annotate /Users/me/MyDocuments/annotations.yml
File .yml adalah file konfigurasi YAML standar yang mirip dengan contoh di bawah ini dengan satu atau lebih judul yang disebut title
, connect
, disconnect
, add
, remove
atau update
. Nama node mengikuti konvensi yang sama dengan nama sumber daya Terraform https://registry.terraform.io/providers/hashicorp/aws/latest/docs dan mendukung wildcard. Anda dapat menambahkan label khusus ke sumber daya TF apa pun dengan mengubah atribut sumber daya dan menambahkan atribut label
(tidak ada di Terraform). Untuk jalur/koneksi, Anda dapat mengubah atribut sumber daya dengan menambahkan edge_labels
khusus terravision untuk menambahkan teks ke jalur koneksi ke node sumber daya tertentu. Lihat contoh di bawah ini:
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 "
Ketik terravision --help
untuk daftar perintah lengkap atau untuk bantuan dengan perintah tertentu