بعدها · فصل ٦

لما الملف يكبر

module · source · path.module · path.root · for_each · count
🎯 الهدف: تقسّم الرسمة لموديول محلي، وتعرف إن path.module فولدر الموديول، وتختار for_each لما الاسم ثابت.

ليه موديول

الفولدر اللي بتشغّل فيه terraform اسمه الـ root module. أول ما نفس بلوك الملف أو السيرفر يتكرر في مشروعين، انقله لفولدر واستدعِه. الموديول مش سيرفر. ده مجموعة بلوكات ليها مدخلات ومخرجات.

انسَخ البلوك مرتين هتنسى تعدّل النسخة التانية. الموديول نسخة واحدة من الرسمة، والنداء يمرّر القيم.

الاستدعاء

الموديول اللي اتشغّل:

modules/note/main.tf
variable "greeting" {  type = string}resource "local_file" "note" {  filename = "${path.module}/hello.txt"  content  = "${var.greeting}\n"}output "path" {  value = local_file.note.filename}
main.tf
module "note" {  source   = "./modules/note"  greeting = "hello from a module"}output "path" {  value = module.note.path}

source هنا مسار محلي. init يجهّز الموديول. apply كتب الملف في modules/note/hello.txt لأن path.module جوه الموديول هو فولدر الموديول، مش الفولدر اللي وقفت فيه. path.root هو فولدر الأمر.

العنوان جوه الدفتر بقى module.note.local_file.note. المخرج اتقرأ module.note.path.

count بيزحزح العناوين

count = 2 يعمل local_file.note[0] وlocal_file.note[1]. لو شلت العنصر الأول من القائمة، اللي كان [1] يبقى [0]. الخطة تشوف العنوان اتغير، فتهدد مورد وتخلّق واحد تاني حتى لو المحتوى نفسه.

for_each على map العنوان فيه المفتاح: local_file.note["a"]. شلت المفتاح b، الخطة تمس b بس.

main.tf
variable "notes" {  type = map(string)  default = {    a = "hello"    b = "again"  }}resource "local_file" "note" {  for_each = var.notes  filename = "${path.module}/${each.key}.txt"  content  = "${each.value}\n"}

استخدم count لما العدد هو المعلومة، زي «نسختين متطابقين». استخدم for_each لما كل نسخة ليها اسم هيفضل ثابت لو شلت واحدة من النص.

خلّصت الفصل لما

🧠 اختبر نفسك
١) path.module جوه modules/note هيكتب الملف فين؟
جوه modules/note، مش في فولدر الـ root. المعمل كتب modules/note/hello.txt.
٢) إزاي الـ root يقرأ مخرج path من الموديول؟
module.note.path
٣) ليه شيل أول عنصر في count ممكن يهد الباقي؟
لأن العناوين أرقام. اللي بعد المحذوف بياخد رقم أصغر، والخطة تشوفه مورد جديد.