خطوات الاستخدام
الخطوة الأولى: ألصق كود Terraform الخاص بك. انسخ الكود من ملفات التكوين (مثل main.tf) والصقه في حقل الإدخال. تأكد من أن الكود صحيح نحويًا لضمان عد دقيق. الحاسبة تبحث عن الكلمة المفتاحية 'module' في النص.
الخطوة الثانية: كيف تتعرّف الأداة على الوحدات. تطابق الأداة سطرًا واحداً لكل وحدة بالنمط: مسافات بادئة اختيارية، ثم الكلمة module، ثم اسم بين علامتَي اقتباس، ثم قوس معقوف مفتوح — أي `module "vpc" {`. سطور التعليقات لا تُطابَق عمليًا لأنها تبدأ بـ '#' أو '//' لا بالكلمة module، وتعريفات resource و data لا تُحتسب لأن النمط لا يطابقها. لكن كن صريحًا مع نفسك: هذه عدّاد تقريبي لا محلّل HCL، فالنصّ داخل سلسلة متعددة الأسطر (heredoc) الذي يحتوي سطرًا يبدأ بـ module "..." { سيُحتسب خطأً، وكذلك اسم وحدة داخل تعليق يبدأ بمسافات ثم '#' لا يُحتسب لأنه لا يطابق بداية النمط.
الخطوة الثالثة: قراءة الناتج. الرقم الرئيسي هو عدد كتل module المعلَنة، وتُخرج التفاصيل معه: عدد الأسماء الفريدة، وعدد الأسماء المكرّرة (نفس الاسم مرّتين يعني كتلتين باسم واحد)، وقائمة الأسماء بترتيب ورودها في الكود، والأسماء المكرّرة بعينها. تكرار الاسم داخل ملف واحد خطأ نحوي في Terraform، لكنه مشروع عبر ملفات أو وحدات فرعية مختلفة، لذلك تعرض الحاسبة التكرار ولا ترفضه.
الخطوة الرابعة: عرض النتيجة. يتم عرض العدد مع رسالة توضيحية مثل 'تم العثور على X وحدات Terraform'. يمكنك استخدام هذه المعلومة لفهم حجم مشروعك أو تحسين هيكله.
أمثلة محلولة
تطبيقات عملية على عداد وحدات Terraform بخطوات الحل كاملة.
الحل
لنفترض أن لدينا الكود التالي:
```hcl
module "vpc" {
source = "terraform-aws-modules/vpc/aws"
version = "3.0.0"
}
module "ec2" {
source = "terraform-aws-modules/ec2/aws"
version = "4.0.0"
}
module "rds" {
source = "terraform-aws-modules/rds/aws"
version = "5.0.0"
}
```
عند لصق هذا الكود في الحاسبة، ستعثر الأداة على ثلاث كلمات 'module' مستقلة خارج التعليقات. ستظهر النتيجة: 'تم العثور على 3 وحدات Terraform'. هذا مفيد لمشروع صغير يستخدم وحدات جاهزة لتوفير البنية التحتية.
الحل
لنفترض الكود التالي:
```hcl
# module "http" {
# source = "./modules/http"
# }
module "app" {
source = "./modules/app"
module "database" {
source = "./modules/db"
}
}
resource "aws_instance" "web" {
ami = "ami-123"
}
```
هذا الكود يحتوي على وحدة معلقة (module "http") ووحدة داخل أخرى (module "database"). الحاسبة ستتجاهل السطر المعلق (لأنه يبدأ بـ #) وستحتسب فقط الوحدات الفعلية غير المعلقة. ستجد 'module "app"' و 'module "database"' ولكن 'database' معرف داخل 'app' - هل يُحتسب؟ نعم، الأداة تبحث عن أي ظهور لـ 'module' ككلمة مستقلة خارج التعليقات، بغض النظر عن التداخل. بالتالي، العدد هو 2. النتيجة: 'تم العثور على 2 وحدات Terraform'. هذا يوضح أن الأداة لا تتعامل مع التسلسل الهرمي وإنما مع العدد الأولي.
أمثلة محسوبة
قيم مُدخَلة ونتيجة محسوبة فعليًا بواسطة عداد وحدات Terraform.
أوراكل — ثلاث وحدات بأسماء متمايزة
- كود Terraform
- module "vpc" { source = "./modules/vpc" } module "s3" { source = "cloudposse/s3-bucket/aws" } module "dns" { source = "./modules/dns" }
- كتل module المعلَنة
- 3
- أسماء فريدة
- 3
- أسماء مكرّرة
- 0
- الأسماء بترتيب الورود
- vpc, s3, dns
أوراكل — اسم مكرر وكتلة resource مستثناة
- كود Terraform
- module "vpc" { } module "vpc" { } resource "aws_instance" "web" { }
- كتل module المعلَنة
- 2
- أسماء فريدة
- 1
- أسماء مكرّرة
- 1
- الأسماء بترتيب الورود
- vpc, vpc
- الأسماء المكرّرة بعينها
- vpc
أسطر التعليقات وسطر الإجراءات لا تُحتسب إطلاقًا
- كود Terraform
- # module "commented" { // module "slash" { # module "indented" { Terraform will perform the following actions:
- أسماء فريدة
- 0