البرمجة

العنوان: تكرار الموردين في تيرافورم

عندما تقوم بإنشاء وحدة في تيرافورم (Terraform) التي يمكن تكرارها بمدخلات متغيرة مختلفة، يمكنك الرجوع إلى الموارد باستخدام اسماء متغيرة عبر استخدام الدالة الحاسبة interpolation syntax ${}. ومن النظرة الأولى، يبدو أن الكود الذي قمت بتوفيره قد تكون فيه بعض الأخطاء البسيطة.

الخطأ الذي تراه يبدو متعلقًا بصيغة تعريف المورد resource لل aws_ecs_service. يجب أن يكون اسم المورد (resource) قبل السطر ${var.name} في المثال الذي قدمته. يجب عليك تغيير السطر:

hcl
resource "aws_ecs_service" "${var.name}" {

إلى:

hcl
resource "aws_ecs_service" "${var.name}_service" {

هذا التعديل يجب أن يحل المشكلة التي واجهتها. بعد هذا التعديل، ستصبح صيغة إشارة المورد (resource reference) الخاصة بالمهمة task_definition صحيحة وستتمكن من الوصول إلى القيمة المطلوبة.

لتوضيح، هناك كود محدث ليعكس هذا التعديل:

hcl
variable "name" {} resource "aws_ecs_service" "${var.name}_service" { name = "${var.name}_service" cluster = "" task_definition = "${aws_ecs_task_definition.${var.name}.arn}" desired_count = 1 } resource "aws_ecs_task_definition" "${var.name}" { family = "ecs-family-${var.name}" container_definitions = "${template_file.${var.name}_task.rendered}" } resource "template_file" "${var.name}_task" { template = "${file("task-definition.json")}" vars { name = "${var.name}" } }

يرجى ملاحظة أننا قمنا أيضًا بتحديث إشارة المورد (resource reference) لل aws_ecs_task_definition و template_file لتأخذ بعين الاعتبار التغيير الذي قمنا به في اسم المورد (resource name).

المزيد من المعلومات

بالطبع، إليك بعض المعلومات الإضافية حول كيفية العمل مع المتغيرات والموارد في تيرافورم:

  1. استخدام المتغيرات في أسماء الموردين (Resource Names): يمكنك استخدام المتغيرات في أسماء الموردين باستخدام تركيبات interpolation syntax ${}. على سبيل المثال، يمكنك تحديد اسم المورد aws_ecs_service كـ "${var.name}_service".

  2. استخدام المتغيرات في قيم الموردين: يمكنك أيضًا استخدام المتغيرات في قيم الموردين مثل task_definition و cluster. في مثالك، استخدمت ${aws_ecs_task_definition[var.name].arn} للوصول إلى قيمة ARN لتعريف المهمة، وهذا صحيح.

  3. التواريخ والوقت: يمكنك أيضًا استخدام المتغيرات في تحديد التواريخ والأوقات في تيرافورم. على سبيل المثال، var.environment == "production" ? "8h" : "2h" يمكن استخدامه لتحديد فترة الانتظار (wait_time) بناءً على قيمة المتغير environment.

  4. التعليقات: يمكنك استخدام التعليقات لشرح الأشياء في ملفات تيرافورم. يتم تجاهل التعليقات أثناء تشغيل تيرافورم، ولكنها مفيدة لتوضيح القرارات والتصميمات في الكود.

  5. إعادة استخدام الأكواد: يمكنك إعادة استخدام الأكواد من خلال تعريف وحدات (modules) في تيرافورم. الوحدات تسمح بتجميع وإعادة استخدام مجموعات من الموارد والمتغيرات والمخرجات في ملف واحد قابل لإعادة الاستخدام.

  6. استخدام الوظائف: يمكنك استخدام الوظائف في تيرافورم للقيام بعمليات معقدة أو تكرارية. يمكن استخدام الوظائف لتوليد قيم مختلفة بناءً على المتغيرات أو البيانات الأخرى في التيرافورم.

هذه بعض الأمثلة على كيفية استخدام المتغيرات والموارد في تيرافورم بطريقة تسمح بتكرار وإعادة استخدام الأكواد بشكل فعال.

زر الذهاب إلى الأعلى