TerraVision เป็นเครื่องมือ CLI ที่แปลงโค้ด Terraform ให้เป็นไดอะแกรมสถาปัตยกรรมคลาวด์ระดับมืออาชีพ และแก้ปัญหาในการรักษาเอกสารที่สำคัญที่สุดในโปรเจ็กต์บนคลาวด์ เอกสารสถาปัตยกรรมให้เป็นปัจจุบัน ด้วยความเร็วสูงที่ปล่อยบรรทัดฐานในขณะนี้ ไดอะแกรมสถาปัตยกรรมที่สร้างโดยเครื่องจักรจึงมีความแม่นยำมากกว่าการพึ่งพาไดอะแกรมฟรีสไตล์ที่วาดโดยสถาปนิกระบบคลาวด์ที่ไม่ตรงกับความเป็นจริงอีกต่อไป Terravision รันฝั่งไคลเอ็นต์อย่างปลอดภัย 100% โดยไม่ต้องพึ่งพา Terraform หรือเข้าถึงสภาพแวดล้อมคลาวด์ของคุณ เพื่อแยกวิเคราะห์ทรัพยากรและตัวแปรที่สร้างขึ้นตามเงื่อนไขแบบไดนามิก และสร้างภาพอัตโนมัติของสถาปัตยกรรมของคุณ Terravision ได้รับการออกแบบมาให้เป็นเครื่องมือ 'Docs as Code' (DaC) ที่สามารถรวมไว้ในไปป์ไลน์ CI/CD ของคุณเพื่ออัปเดตไดอะแกรมสถาปัตยกรรมหลังจากขั้นตอนไปป์ไลน์การสร้าง/ทดสอบ/เผยแพร่ และเสริมเครื่องมือสร้างเอกสารอื่นๆ เช่น readthedocs.io ควบคู่ไปกับเครื่องมือดังกล่าว ปัจจุบันรองรับ AWS และเร็วๆ นี้ Google และ Azure cloud
เลี้ยวนี่...
เข้าไปในนี้...
ซอฟต์แวร์นี้ยังอยู่ในการทดสอบอัลฟ่าและ มีการแบ่งปันโค้ด "ตามสภาพ" โดยไม่มีการรับประกันหรือเงื่อนไขใดๆ ทั้งโดยชัดแจ้งหรือโดยนัย ใช้ความเสี่ยงของคุณเอง
git clone https://github.com/patrickchugh/terravision.git
cd terravision
และทำ pwd
PATH
ของคุณ เช่น export PATH=$PATH:/Users/<PATH TO TERRAVISION>
เพื่อให้คุณสามารถเรียกใช้ได้จากทุกที่ <PATH TO TERRAVISION>
จะเป็นเอาต์พุตจากบรรทัดที่ 3cd terravision && pip install -r requirements.txt
chmod +x terravision
terravision
และระบุไฟล์ต้นฉบับ Terraform ของคุณในรูปแบบ: $ terravision draw --source ~ /src/my-terraform-code
สำหรับสแต็ก Terraform ที่มีเวิร์กสเปซ คุณสามารถใช้พารามิเตอร์ --workspace
ได้:
$ terraform draw --source ~ /src/my-terraform-code --workspace development
สำหรับซอร์สโค้ด Terraform ใน Git repo คุณสามารถใช้แบบฟอร์ม:
$ terravision draw --source https://github.com/your-repo/terraform-examples.git
ใช้อักขระ //
สำหรับโฟลเดอร์ย่อยภายใน Git repos หากโค้ดที่คุณต้องการอยู่ภายใต้ลำดับชั้นของโฟลเดอร์
$ terravision draw --source https://github.com/your-repo/terraform-examples.git//mysubfolder/secondfolder/
ไม่มีไดอะแกรมที่สร้างขึ้นโดยอัตโนมัติจะมีรายละเอียดทั้งหมดที่คุณต้องการ อย่างดีที่สุดจะช่วยให้คุณได้รับ 80-90% ของวิธีการนั้น หากต้องการเพิ่มคำอธิบายประกอบที่กำหนดเอง เช่น ชื่อไดอะแกรมหลัก ป้ายกำกับเพิ่มเติมบนลูกศร หรือทรัพยากรเพิ่มเติมที่สร้างขึ้นภายนอก Terraform ของคุณ ให้รวมไฟล์ terravision.yml
ไว้ในโฟลเดอร์ซอร์สโค้ด จากนั้นไฟล์จะถูกโหลดโดยอัตโนมัติ หรือระบุพาธไปยังไฟล์คำอธิบายประกอบเป็นพารามิเตอร์สำหรับ Terravision
terravision --source https://github.com/your-repo/terraform-examples.git --annotate /Users/me/MyDocuments/annotations.yml
ไฟล์ .yml เป็นไฟล์การกำหนดค่า YAML มาตรฐานที่คล้ายกับตัวอย่างด้านล่าง โดยมีส่วนหัวอย่างน้อย 1 รายการที่เรียกว่า title
, connect
, disconnect
, add
, remove
หรือ update
ชื่อโหนดเป็นไปตามแบบแผนเดียวกันกับชื่อทรัพยากร Terraform https://registry.terraform.io/providers/hashicorp/aws/latest/docs และรองรับไวด์การ์ด คุณสามารถเพิ่มป้ายกำกับที่กำหนดเองให้กับทรัพยากร TF ได้โดยแก้ไขแอตทริบิวต์ของทรัพยากรและเพิ่มแอตทริบิวต์ label
(ไม่มีอยู่ใน Terraform) สำหรับเส้น/การเชื่อมต่อ คุณสามารถแก้ไขแอตทริบิวต์ทรัพยากรได้โดยเพิ่ม edge_labels
เฉพาะ Terravision เพื่อเพิ่มข้อความลงในสายเชื่อมต่อไปยังโหนดทรัพยากรเฉพาะ ดูตัวอย่างด้านล่าง:
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 "
พิมพ์ terravision --help
เพื่อดูรายการคำสั่งทั้งหมดหรือขอความช่วยเหลือเกี่ยวกับคำสั่งเฉพาะ