0Pricing
Terraform Infrastructure as Code · درس

استخدام البيانات الخارجية والقوالب

اجلبوا القيم الديناميكية إلى Terraform باستخدام مصدر البيانات external، واعرضوا ملفات الإعداد باستخدام الدالة templatefile.

استخدام البيانات الخارجية والقوالب درس مجاني في Terraform Infrastructure as Code على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Terraform Infrastructure as Code، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Terraform Infrastructure as Code 4 دروس في المجموع.

ما بعد مصادر البيانات المضمنة

لقد استعلمت عن AWS باستخدام مصادر البيانات. لكن البيانات التي تحتاج إليها توجد أحيانًا خارج أي موفر، مثل ناتج برنامج shell النصي أو واجهة API داخلية. ويسد مصدر البيانات external ودوال template هذه الفجوة.

مصدر البيانات external

يشغّل مصدر البيانات external برنامجًا ويقرأ JSON من مخرجه القياسي. وهو حل بديل للمنطق الذي لا يستطيع Terraform التعبير عنه بشكل أصلي.

data "external" "git_sha" {
  program = ["bash", "./scripts/git_sha.sh"]
}

عقد البرنامج

يتلقى البرنامج الخارجي كائن JSON عبر الإدخال القياسي، ويجب أن يطبع كائن JSON مسطحًا من قيم نصية إلى الإخراج القياسي. وأي شيء آخر يُعد خطأ.

#!/bin/bash
echo '{"sha": "abc123"}'

قراءة النتائج الخارجية

يمكنك الوصول إلى القيم المُعادة من خلال الخريطة result. فجميع القيم نصية، لذا حوّل النوع إذا كنت تحتاج إلى نوع آخر.

resource "aws_instance" "app" {
  ami           = "ami-0abcd1234"
  instance_type = "t3.micro"

  tags = {
    GitSha = data.external.git_sha.result.sha
  }
}

متى تتجنب external

يُشغَّل المصدر الخارجي في كل عملية تخطيط، ويؤثر في قابلية إعادة الإنتاج إذا كان البرنامج النصي غير حتمي. فضّل استخدام مصدر بيانات حقيقي من الموفر عند توفره، واحجز external للفجوات الفعلية.

تصيير الملفات باستخدام templatefile

تقرأ الدالة templatefile قالبًا، وتستبدل المتغيرات، ثم تعيد نصًا. وهي مناسبة تمامًا لبيانات المستخدم cloud-init وملفات الإعداد.

resource "aws_instance" "web" {
  ami           = "ami-0abcd1234"
  instance_type = "t3.micro"
  user_data = templatefile("init.tftpl", {
    hostname = "web-01"
  })
}

صياغة القوالب

داخل ملف .tftpl، أدرج القيم باستخدام صياغة dollar-brace. ويستبدل Terraform المتغيرات التي مررتها.

#!/bin/bash
hostnamectl set-hostname ${hostname}
echo 'Provisioned by Terraform'

الحلقات في القوالب

تدعم القوالب توجيهات التكرار. إذ تعرض توجيهة for أسطرًا متكررة، وهو أمر مفيد لإنشاء قوائم بالمضيفين.

%{ for ip in ips ~}
server ${ip}:8080
%{ endfor ~}

القوالب المضمنة باستخدام templatestring

بالنسبة إلى المقاطع القصيرة، يمكنك الاستغناء عن ملف واستخدام templatestring (أو format الأقدم) لإنشاء نصوص ديناميكية مباشرةً في الإعدادات.

locals {
  greeting = templatestring("Hello, $${name}!", { name = "Ops" })
}

دمج الاثنين

نمط شائع: يجلب مصدر external قيمة ديناميكية، ثم تحقنها templatefile في إعدادات تُصيَّر كبيانات مستخدم.

user_data = templatefile("app.tftpl", {
  version = data.external.git_sha.result.sha
})

الحفاظ على idempotence لعمليات التصيير

نظرًا إلى أن تغيير user_data يفرض استبدال المثيل، حافظ على ثبات مدخلات القالب. فأي قيمة تتغير باستمرار، مثل الطابع الزمني، ستؤدي إلى إعادة إنشاء المثيلات عند كل عملية apply.

اختبار سريع

اختبر مدى فهمك لمصدر البيانات الخارجي.

مراجعة: المدخلات الديناميكية والقوالب

وسّعت قدرات Terraform الخاصة بالبيانات:

  • يشغّل المصدر external البرامج النصية التي تعيد JSON.
  • تُصيّر templatefile ملفات الإعداد وملفات بيانات المستخدم.
  • تدعم توجيهات القوالب الحلقات والإدراج.
  • حافظ على ثبات المدخلات لتجنب الاستبدالات غير المرغوبة.

الأسئلة الشائعة

هل درس «استخدام البيانات الخارجية والقوالب» مجاني؟

نعم — نص درس «استخدام البيانات الخارجية والقوالب» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Terraform Infrastructure as Code، انتقل إلى CoddyKit PRO. تتضمن دورة Terraform Infrastructure as Code 4 دروس في المجموع.

ماذا ستتعلم في «استخدام البيانات الخارجية والقوالب»؟

اجلبوا القيم الديناميكية إلى Terraform باستخدام مصدر البيانات external، واعرضوا ملفات الإعداد باستخدام الدالة templatefile. تتمرن على Terraform Infrastructure as Code مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Terraform Infrastructure as Code؟

لا تُشترط خبرة سابقة. Terraform Infrastructure as Code على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.

كم من الوقت يستغرق درس «استخدام البيانات الخارجية والقوالب»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Terraform Infrastructure as Code هذا؟

نعم. كل درس في Terraform Infrastructure as Code يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. الاستعلام عن البيانات باستخدام مصادر البيانات
  2. موفرا التهيئة `local-exec` و`remote-exec`
  3. الموارد الفارغة والمحفزات
  4. استخدام البيانات الخارجية والقوالب
← العودة إلى Terraform Infrastructure as Code