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>
سيكون الناتج من السطر 3.cd 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 --source https://github.com/your-repo/terraform-examples.git --annotate /Users/me/MyDocuments/annotations.yml
ملف .yml هو ملف تكوين YAML قياسي يشبه المثال أدناه مع عنوان واحد أو أكثر يسمى title
أو connect
أو disconnect
أو add
remove
أو update
. تتبع أسماء العقد نفس الاصطلاحات مثل أسماء موارد Terraform https://registry.terraform.io/providers/hashicorp/aws/latest/docs وتدعم أحرف البدل. يمكنك إضافة تسمية مخصصة إلى أي مورد TF عن طريق تعديل سمات المورد وإضافة سمة label
(غير موجودة في Terraform). بالنسبة للخطوط/الاتصالات، يمكنك تعديل سمات المورد عن طريق إضافة edge_labels
محددة للمنطقة لإضافة نص إلى خط الاتصال إلى عقدة مورد محددة. انظر المثال أدناه:
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
للحصول على قائمة الأوامر الكاملة أو للمساعدة في أمر محدد