الدوال المضمّنة في Terraform
استكشف مجموعة واسعة من الدوال المضمّنة في Terraform لمعالجة السلاسل والقوائم وتحويل الأنواع وغير ذلك، لتحسين تهيئاتك.
الدوال المضمّنة في Terraform درس مجاني في DevOps Bootcamp على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في DevOps Bootcamp، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة DevOps Bootcamp 4 دروس في المجموع.
اكتشفوا الإعدادات الديناميكية
تشبه الدوال المضمّنة في Terraform برامج صغيرة تساعدكم على معالجة القيم وتحويلها مباشرةً داخل ملفات الإعداد.
وتتيح لكم إنشاء تعريفات للبنية التحتية تتسم بالديناميكية وقابلية إعادة الاستخدام والذكاء الأكبر.
- تحويل البيانات: تغيير السلاسل أو الأرقام أو القوائم.
- حساب القيم: إجراء العمليات الحسابية أو عمليات التحقق المنطقية.
- إنشاء محتوى ديناميكي: إنشاء أسماء الموارد أو الوسوم أثناء التنفيذ.
تحويلات النصوص
تُعدّ دوال السلاسل النصية أساسية لمعالجة النصوص. ومن الدوال الأساسية upper() وlower()، اللتان تغيّران حالة أحرف السلسلة.
وتفيد هذه الدوال في توحيد اصطلاحات التسمية أو مطابقة متطلبات محددة.
variable "region_code" {
type = string
default = "us-east-1"
}
output "upper_region" {
value = upper(var.region_code)
}
output "lower_example" {
value = lower("AWS_REGION")
}وصل السلاسل وتقسيمها
تجمع الدالة join() عناصر قائمة في سلسلة واحدة باستخدام محدِّد معيّن. وعلى العكس، تقسّم split() سلسلة إلى قائمة من السلاسل الفرعية استنادًا إلى محدِّد.
وتُعدّ هاتان الدالتان مفيدتين لتحليل البيانات أو إنشاء أسماء معقدة.
variable "tags_list" {
type = list(string)
default = ["web", "frontend", "prod"]
}
output "joined_tags" {
value = join(",", var.tags_list)
}
output "split_string" {
value = split("-", "server-01-app")
}الرياضيات في إعداداتكم
تساعدكم الدوال الرقمية على إجراء العمليات الرياضية الأساسية. إذ تقرّب ceil() إلى الأعلى، وتقرّب floor() إلى الأسفل، وتبحث min()/max() عن أصغر القيم أو أكبرها من بين مجموعة.
وهي مفيدة جدًا لحساب أعداد الموارد أو تحديد أحجامها.
variable "instance_ratio" {
type = number
default = 3.7
}
output "rounded_up_instances" {
value = ceil(var.instance_ratio)
}
output "rounded_down_instances" {
value = floor(var.instance_ratio)
}
output "smallest_val" {
value = min(10, 5, 12, 8)
}العمل مع القوائم
القوائم مجموعات مرتبة من العناصر. تخبركم دوال مثل length() بعدد العناصر الموجودة في القائمة، بينما تسترجع element() عنصرًا باستخدام فهرسه الرقمي، الذي يبدأ من 0.
وهي مفيدة للتكرار أو لاختيار عناصر محددة.
variable "zones" {
type = list(string)
default = ["us-east-1a", "us-east-1b", "us-east-1c"]
}
output "num_zones" {
value = length(var.zones)
}
output "first_zone" {
value = element(var.zones, 0)
}معالجة بيانات المفتاح-القيمة
تخزّن الخرائط البيانات على هيئة أزواج من المفتاح والقيمة. وتسترجع lookup() قيمة مفتاح معيّن، مع إمكانية تحديد قيمة افتراضية اختيارية إذا لم يُعثر على المفتاح. وتجمع merge() خرائط متعددة في خريطة واحدة.
وهي مثالية لإدارة البيانات الوصفية أو وسوم الموارد.
variable "server_info" {
type = map(string)
default = {
name = "backend-server"
env = "dev"
}
}
variable "additional_info" {
type = map(string)
default = {
owner = "team-a"
}
}
output "server_name" {
value = lookup(var.server_info, "name", "unknown")
}
output "merged_map" {
value = merge(var.server_info, var.additional_info)
}تغيير أنواع البيانات
أحيانًا يجب أن تكون القيمة من نوع بيانات محدد (مثل سلسلة نصية بدلًا من رقم) لاستخدامها كوسيط لمورد. تساعدك دوال تحويل النوع مثل tostring() وtonumber() على إجراء ذلك.
وهذا يضمن التوافق بين الأجزاء المختلفة من التهيئة.
variable "port_number" {
type = number
default = 8080
}
output "port_as_string" {
value = tostring(var.port_number)
}
output "string_to_number" {
value = tonumber("123") + 7
}الدوال قيد التطبيق
يمكن دمج الدوال المضمنة أو تداخلها لتنفيذ تحويلات معقدة للبيانات. ينشئ هذا المثال اسم مورد من خلال دمج المتغيرات، وتحويل أحدها إلى أحرف كبيرة، والتأكد من صحة الأنواع.
variable "env" {
type = string
default = "dev"
}
variable "service" {
type = string
default = "app"
}
variable "instance_id" {
type = number
default = 1
}
output "resource_name" {
value = join("-", [
upper(var.env),
var.service,
tostring(var.instance_id)
])
}أفضل الممارسات
عند استخدام الدوال، احرصوا على الوضوح وسهولة الصيانة:
- اجعلوا الشيفرة سهلة القراءة: لا تفرطوا في تداخل الدوال إذا جعل ذلك فهم الشيفرة صعبًا.
- استخدموا المتغيرات: خزّنوا النتائج الوسيطة المعقدة في متغيرات محلية لتحسين سهولة القراءة.
- اختبروا باستخدام
terraform console: جرّبوا الدوال بسرعة لمعرفة ناتجها قبل إضافتها إلى التهيئة.
تحدي الدوال
لنختبر مدى فهمكم لكيفية عمل الدوال المضمنة في Terraform معًا.
لقد أتقنتم الدوال
لقد استكشفتم الدوال المضمنة القوية في Terraform!
أصبحتم الآن تفهمون كيفية استخدام دوال السلاسل النصية والأرقام والمجموعات وتحويل الأنواع لجعل التهيئات ديناميكية وقابلة للتكيف. وتُعد هذه الأدوات أساسية لكتابة بنية تحتية فعّالة وقابلة لإعادة الاستخدام باستخدام الشيفرة.
الأسئلة الشائعة
هل درس «الدوال المضمّنة في Terraform» مجاني؟
نعم — نص درس «الدوال المضمّنة في Terraform» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة DevOps Bootcamp، انتقل إلى CoddyKit PRO. تتضمن دورة DevOps Bootcamp 4 دروس في المجموع.
ماذا ستتعلم في «الدوال المضمّنة في Terraform»؟
استكشف مجموعة واسعة من الدوال المضمّنة في Terraform لمعالجة السلاسل والقوائم وتحويل الأنواع وغير ذلك، لتحسين تهيئاتك. تتمرن على DevOps Bootcamp مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ DevOps Bootcamp؟
لا تُشترط خبرة سابقة. DevOps Bootcamp على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.
كم من الوقت يستغرق درس «الدوال المضمّنة في Terraform»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس DevOps Bootcamp هذا؟
نعم. كل درس في DevOps Bootcamp يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- استخدام الحلقات مع `for_each` و`count`
- الدوال المضمّنة في Terraform
- التعبيرات الشرطية وتعبيرات Splat
- الكتل الديناميكية للإعدادات المتداخلة