كيفية استخدام كتلة الاستيراد في تيرافورم لاستيراد الموارد

مع Terraform 1.5 والإصدارات الأحدث، يمكنك استخدام كتلة import لإدارة استيراد الموارد مباشرة في تكوينك. هذه الميزة تبسط عملية استيراد البنية التحتية الموجودة إلى حالة Terraform، مما يلغي الحاجة إلى أمر سطر الأوامر المنفصل terraform import.

في هذه المقالة، نشرح كتلة الاستيراد وكيفية استخدامها لاستيراد موارد مختلفة.

ما هي كتلة استيراد Terraform؟

تقدم كتلة import التي تم تقديمها في Terraform v1.5.0 نهجًا إعلانيًا لاستيراد موارد البنية التحتية الموجودة إلى ملف حالة Terraform. تسمح استيرادات الموارد بأن تصبح جزءًا لا يتجزأ من عملية تخطيط Terraform – مشابهة للموارد المدارة الأخرى – بدلاً من اعتبارها عملية حالة مباشرة. 

نتيجة لذلك، تحسن كتلة import الشفافية وتنسق استيرادات الموارد مع المبادئ الأساسية للبنية التحتية ككود (IaC)، مما يمكّن المستخدمين من إدارة بنيتهم التحتية بشكل أكثر فعالية وقابلية للتنبؤ. 

الصيغة الخاصة بكتلة import في Terraform هي كما يلي:

Plain Text

 

  • to: يحدد عنوان المورد في تكوينك حيث سيتم تعيين المورد المستورد.
  • id: يحدد المعرف الفريد للمورد الحالي في واجهة برمجة تطبيقات المزود. تأكد من تكوين موفر Terraform الخاص بك بشكل صحيح للوصول إلى المورد المستورد.

يرجى ملاحظة أن بعض أنواع الموارد قد تحتوي على متطلبات أو قيود إضافية للاستيراد.

قطعة الاستيراد مقابل أمر استيراد Terraform

تتيح قطعة import في Terraform لك تعريف الموارد مباشرة في ملف التكوين الخاص بك، مما يبسط إدارة البنية التحتية الحالية.

على النقيض، عند استخدام أمر terraform import دون قطعة import، فإنه يربط موردًا موجودًا بحالة Terraform ولكنه لا يولد تلقائيًا التكوين المقابل في كودك. يجب عليك إضافة هذا التكوين يدويًا بعد ذلك. يكون الأمر المستورد مفيدًا بشكل خاص للاستيرادات لمرة واحدة أو لنقل البنية التحتية إلى إدارة Terraform.

كلا الطريقتين تتطلب التعامل الحذر لضمان الاتساق بين حالة Terraform والبنية التحتية الفعلية. تكون قطعات import مناسبة بشكل عام لإدارة الموارد المستمرة، بينما يعمل الأمر المستقل بشكل جيد للاستيرادات المتقطعة.

مثال 1: استخدام كتلة الاستيراد في تيرافورم لاستيراد سلة S3

لنفترض أن لدينا سلة AWS S3 موجودة (my-existing-bucket) ترغب في إدارتها باستخدام تيرافورم.

يحدد كتلة المورد سلة S3 (aws_s3_bucket.example) ويحدد سمة الـ bucket اسم السلة الموجودة:

Plain Text

 

تربط كتلة الاستيراد السلة S3 الموجودة بمورد تيرافورم.

  • to: يعين المورد المستورد إلى عنوان كتلة المورد (aws_s3_bucket.example)
  • id: يحدد الهوية الفريدة للسلة (my-existing-bucket).

عند تشغيل terraform plan، يقرأ تيرافورم كتلة الاستيراد، يتحقق من حالة سلة S3 الموجودة، ويعرض معاينة للتغييرات التي سيقوم بها إلى ملف الحالة. ثم، بعد تشغيل terraform apply، يقوم تيرافورم بتحديث ملف الحالة ليتضمن السلة الموجودة، مرتبطة بمورد aws_s3_bucket.example.

بعد تشغيل terraform apply واستيراد المورد بنجاح، من الأفضلية إزالة كتلة import. الإبقاء عليها لن يسبب أي ضرر، ولكن إزالتها تساعد في الحفاظ على تكوين نظيف وتقليل الالتباس المحتمل أثناء إدارة الحالة في المستقبل.

المثال 2: استخدام كتلة الاستيراد في تيرافورم لاستيراد مثيل EC2

لننظر إلى مثال آخر: لدينا مثيل EC2 موجود بالمعرف i-1234567890abcdef0  ونريد إدارته تحت تيرافورم.

نحدد المورد aws_instance الذي نريد من تيرافورم إدارته في كتلة resource. تأكد من تطابق السمات (على سبيل المثال، ami، instance_type) مع تكوين المثيل الموجود:

Plain Text

 

في كتلة import:

  • to: تربط المورد في تكوينك (aws_instance.example) بالمورد الموجود.
  • id: يحدد معرف فريد لمثيل EC2 الذي تقوم باستيراده.

بمجرد إضافة كتلة المورد وبيان الاستيراد إلى ملف تكوين تيرافورم الخاص بك، قم بتشغيل terraform plan لمعاينة التغييرات. بعد ذلك، قم بتشغيل terraform apply لاستيراد المورد إلى ملف الحالة في تيرافورم.

بعد الاستيراد، ستدير تيرافورم المثيل EC2 الموجود، مضمنة بقاء تكوينها تصريحيًا.

مثال 3: استخدام كتلة الاستيراد في تيرافورم لاستيراد مجموعة موارد Azure

في المثال التالي، سنقوم باستيراد مجموعة موارد Azure.

لدينا مجموعة موارد Azure موجودة بالفعل تحت اسم example-resource-group في منطقة East US، ونريد إدارتها باستخدام تيرافورم.

أولاً، في كتلة resource، نحدد مورد azurerm_resource_group الذي سيديره تيرافورم:

Plain Text

 

كتلة الاستيراد:

  • to: يربط المورد في تكوينك (azurerm_resource_group.example) بالمورد الحالي في Azure.
  • id: يحدد معرف مورد Azure الكامل لمجموعة الموارد. تذكر أن تستبدل <subscription_id> بمعرف الاشتراك الفعلي لديك.

أضف المورد وكتلة الاستيراد إلى ملف تكوين تيرافورم الخاص بك. بعد ذلك، قم بتشغيل الأمر terraform plan لمعاينة التغييرات وتنفيذ الأمر terraform apply لتطبيق التغييرات واستيراد المورد إلى ملف حالة تيرافورم الخاص بك.

هل يمكنك استخدام كتلة الاستيراد في تيرافورم بشكل مشروط؟

يتم تصميم كتلة الاستيراد في تيرافورم لتكون تصريحية وتتطلب قيم محددة معروفة في وقت التخطيط. لذلك، لا يمكن استخدامها بشكل مشروط ضمن كود تيرافورم الخاص بك.

لا تدعم كتلة الاستيراد التعبيرات الديناميكية أو المتغيرات لتحديد معرف الاستيراد استنادًا إلى الشروط. محاولات استخدام بنى مثل count أو المتغيرات داخل كتلة الاستيراد ستؤدي إلى وجود أخطاء، حيث لا يسمح تيرافورم بمثل هذه الوسيطات في هذا السياق.

نقاط رئيسية

تبسيط إدارة الموارد من خلال إدخال كتلة الاستيراد في تيرافورم 1.5+ يمكنه استيراد الموارد مباشرة وتعريفها داخل ملفات التكوين. يتماشى ذلك مع مبادئ البنية كـ كود عن طريق تقليل التعقيد وجعله أسهل لدمج البنية التحتية الحالية في تكوينات تيرافورم.

Source:
https://dzone.com/articles/how-to-use-terraform-import-block