الموارد الفارغة والمحفزات
اكتشف `null_resource` لتنفيذ أوامر عشوائية لا تقابل موردًا سحابيًا حقيقيًا، واستخدم المحفزات للتحكم في توقيت تشغيل موفري التهيئة.
الموارد الفارغة والمحفزات درس مجاني في Terraform Infrastructure as Code على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Terraform Infrastructure as Code، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Terraform Infrastructure as Code 4 دروس في المجموع.
ما هو null_resource؟
يُعدّ null_resource في Terraform نوعًا خاصًا من الموارد، ولا ينشئ أو يدير مباشرةً أي كائن من كائنات البنية التحتية لدى موفّر الخدمة السحابية.
بل يعمل كعنصر نائب لتشغيل أوامر أو نصوص برمجية عشوائية، ويُستخدم غالبًا للمهام التي تقع خارج نطاق توفير الموارد المعتاد.
لماذا نستخدم null_resource؟
قد تتساءلون عن سبب حاجتكم إلى مورد «فارغ». إنه مفيد للغاية في الحالات التالية:
- تشغيل النصوص البرمجية المحلية: تنفيذ الأوامر على الجهاز الذي يُشغَّل عليه Terraform، مثل إعداد ملفات التهيئة.
- إجراءات ما بعد النشر: تنفيذ مهام الإعداد أو التنظيف بعد توفير الموارد الفعلية.
- التفاعل مع واجهات API الخارجية: عندما لا يتوفر موفّر Terraform مخصّص لخدمة معينة.
- المنطق المخصّص: تنسيق خطوات مخصّصة لا ترتبط بمورد سحابي محدد.
البنية الأساسية لـ null_resource
تبدو كتلة null_resource كأي مورد آخر في Terraform. وبمفردها، ومن دون أي مزوّدات أو مشغّلات، تنشئ ببساطة كائنًا «فارغًا» في حالة Terraform ولا تفعل شيئًا آخر.
وعادةً ما تُقرن بـالمزوّدات لتنفيذ الأوامر، وبـالمشغّلات للتحكم في وقت تشغيل تلك الأوامر.
مثال بسيط على null_resource
إليكم null_resource بالحد الأدنى. إذا نفّذتم terraform apply لهذا المورد، فسيُنشأ في الحالة، ولكن لن يحدث أي إجراء خارجي.
إنه مجرد عنصر نائب، جاهز لإضافة الإجراءات إليه.
resource "null_resource" "my_placeholder" {
# This resource exists in state but performs no action.
# It's ready to attach provisioners or triggers.
}المزوّدات مع null_resource
تظهر القوة الحقيقية لـ null_resource عند دمجه مع المزوّدات.
تتيح لكم المزوّدات تنفيذ النصوص البرمجية أو الأوامر على الجهاز الذي يشغّل Terraform (local-exec) أو على المورد البعيد نفسه (remote-exec، رغم أن استخدامه أقل شيوعًا مع null_resource).
يتيح ذلك لـ null_resource أن يصبح منفّذًا للإجراءات.
مقدمة إلى المشغّلات
إن triggers عبارة عن خريطة من أزواج مفتاح-قيمة عشوائية تُعرَّف داخل كتلة null_resource.
وتهدف إلى إخبار Terraform بما يلي: «إذا تغيّرت أي قيمة في هذه الخريطة، فيجب تشغيل null_resource هذا (ومزوّداته) من جديد».
وهذا أمر بالغ الأهمية لجعل null_resource يتفاعل مع التغييرات التي تطرأ على بنيتكم التحتية.
آلية عمل المشغّلات
عندما تتغير قيمة في خريطة triggers، يكتشف Terraform حدوث تعديل في null_resource.
أثناء تنفيذ terraform apply، سيقوم Terraform بما يلي:
- تدمير
null_resourceالموجود، إذا كان موجودًا. - إعادة إنشاء
null_resource. - إعادة تشغيل أي مزوّدات مرتبطة به.
تضمن هذه الآلية تنفيذ إجراءاتكم المخصّصة فقط عند تغيّر التبعيات ذات الصلة.
مثال: المشغّلات و local-exec
نستخدم هنا null_resource لمحاكاة تحديث ملف تهيئة استنادًا إلى متغير بسيط. ينفّذ مزوّد local-exec أمرًا، وتضمن triggers إعادة تشغيله إذا تغيّرت قيمة var.app_version.
variable "app_version" {
description = "The version of the application."
type = string
default = "1.0.0"
}
resource "null_resource" "update_config_file" {
triggers = {
version_change = var.app_version
}
provisioner "local-exec" {
command = "echo 'Config updated for version: ${self.triggers.version_change}' > app_config.txt"
}
}أفضل الممارسات والبدائل
على الرغم من قوة null_resource، استخدموه بحكمة:
- فضّلوا الموفّرات: إذا توفر موفّر أو مورد مخصّص في Terraform لمهمة ما، فاستخدموه بدلًا منه.
- حافظوا على قابلية التكرار: احرصوا على إمكانية إعادة تشغيل النصوص البرمجية التي تنفذها المزوّدات بأمان عدة مرات من دون آثار جانبية.
- تجنبوا إدارة الحالة: لا تحاولوا إدارة الحالة الخارجية باستخدام
null_resource؛ فهذا هو دور الواجهات الخلفية للحالة البعيدة. - فكّروا في مصدر البيانات
external: بالنسبة إلى المنطق الخارجي المعقد الذي يعيد بيانات منظمة، قد يكون مصدر البياناتexternalبديلًا أكثر وضوحًا.
تحقق سريع: الموارد الفارغة
لقد تعلمتم عن null_resource وtriggers. فلنختبر مدى استيعابكم.
مراجعة: Null والمشغّلات
في هذا الدرس، اكتشفتم تعدد استخدامات null_resource في Terraform، وهي أداة قوية لتنفيذ الأوامر والنصوص البرمجية المخصّصة التي لا تقابل موارد سحابية ملموسة.
كما تعلمتم عن triggers، وهي آلية داخل null_resource تتيح لكم تعريف التبعيات وضمان إعادة تنفيذ المزوّدات كلما تغيّرت تلك التبعيات. وهذا يتيح أتمتة مخصّصة ديناميكية وتفاعلية ضمن البنية التحتية كتعليمة برمجية (IaC).
الأسئلة الشائعة
هل درس «الموارد الفارغة والمحفزات» مجاني؟
نعم — نص درس «الموارد الفارغة والمحفزات» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Terraform Infrastructure as Code، انتقل إلى CoddyKit PRO. تتضمن دورة Terraform Infrastructure as Code 4 دروس في المجموع.
ماذا ستتعلم في «الموارد الفارغة والمحفزات»؟
اكتشف `null_resource` لتنفيذ أوامر عشوائية لا تقابل موردًا سحابيًا حقيقيًا، واستخدم المحفزات للتحكم في توقيت تشغيل موفري التهيئة. تتمرن على Terraform Infrastructure as Code مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Terraform Infrastructure as Code؟
لا تُشترط خبرة سابقة. Terraform Infrastructure as Code على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.
كم من الوقت يستغرق درس «الموارد الفارغة والمحفزات»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Terraform Infrastructure as Code هذا؟
نعم. كل درس في Terraform Infrastructure as Code يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- الاستعلام عن البيانات باستخدام مصادر البيانات
- موفرا التهيئة `local-exec` و`remote-exec`
- الموارد الفارغة والمحفزات
- استخدام البيانات الخارجية والقوالب