ما هو Terraform؟ شرح البنية التحتية كشيفرة
إجابة سريعة: Terraform أداة للبنية التحتية كشيفرة (IaC)، أصلها من HashiCorp، تتيح لك تعريف البنية التحتية السحابية والمحلية في ملفات إعداد قابلة للقراءة من قبل البشر، ثم إنشاءها…
In this guide
- ما هي البنية التحتية كشيفرة، ولماذا تهم؟
- كيف يعمل Terraform فعليًا؟
- ما هم الموفّرون (providers)؟
- ما هي حالة Terraform؟
- كيف يبدو الإعداد البسيط؟
- Terraform مقابل الأدوات الأخرى
- ما هي حالات الاستخدام الشائعة لـ Terraform؟
إجابة سريعة: Terraform أداة للبنية التحتية كشيفرة (IaC)، أصلها من HashiCorp، تتيح لك تعريف البنية التحتية السحابية والمحلية في ملفات إعداد قابلة للقراءة من قبل البشر، ثم إنشاءها وتغييرها وإخضاعها للتحكم في الإصدارات بأمان. فأنت تصف الموارد التي تريدها، مثل الخوادم والشبكات وقواعد البيانات، بلغة تعريفية تُسمى HCL؛ ويقارن Terraform تلك الحالة المرغوبة بما هو موجود فعلًا ويُجري التغييرات اللازمة فقط. ويعمل عبر منصات كثيرة من خلال إضافات تُسمى الموفّرين (providers)، ما يجعله واحدًا من أكثر الأدوات استخدامًا في مجالي DevOps وهندسة السحابة الحديثين.
ما هي البنية التحتية كشيفرة، ولماذا تهم؟
البنية التحتية كشيفرة تعني إدارة الخوادم والشبكات والموارد الأخرى عبر ملفات الإعداد بدلًا من النقر يدويًا في وحدة تحكم ويب. والفوائد كبيرة. فتصبح بنيتك التحتية قابلة للتكرار، لأن الملفات نفسها تنتج البيئة نفسها في كل مرة. وتصبح قابلة للمراجعة، لأن التغييرات تمرّ عبر التحكم في الإصدارات ومراجعة الشيفرة تمامًا مثل شيفرة التطبيقات. وتصبح قابلة للاستعادة، لأنك تستطيع إعادة بناء بيئة من الملفات إذا فشل شيء ما. وTerraform من أكثر الطرق شيوعًا لممارسة IaC، ويقع هذا النهج في صميم ما يفعله مهندس DevOps يوميًا.
كيف يعمل Terraform فعليًا؟
يتبع Terraform دورة واضحة قابلة للتكرار. فأنت تكتب الإعداد، وتعاين التغييرات، ثم تطبّقها. ويُلخَّص سير العمل الأساسي عادةً بـ write وplan وapply.
- Write: تعرّف الموارد في ملفات .tf باستخدام HCL، على سبيل المثال جهاز افتراضي وحاوية تخزين وشبكة.
- Init: يؤدي تشغيل terraform init إلى تنزيل الموفّرين الذين يحتاجهم إعدادك وتجهيز دليل العمل.
- Plan: يُظهر تشغيل terraform plan بدقة ما الذي سينشئه Terraform أو يغيّره أو يحذفه، من دون المساس بأي شيء بعد. وهذه المعاينة من أكثر ميزات الأمان قيمةً في Terraform.
- Apply: ينفّذ تشغيل terraform apply الخطة ويوفّر الموارد الحقيقية، ثم يسجّل النتيجة في الحالة.
- Destroy: يُفكّك تشغيل terraform destroy كل ما يديره الإعداد، وهو مفيد للبيئات المؤقتة أو الاختبارية.
ما هم الموفّرون (providers)؟
الموفّر إضافة تُعلّم Terraform كيفية التخاطب مع واجهة برمجة تطبيقات منصة معينة. وثمة موفّرون للسُحب الكبرى مثل Amazon Web Services وMicrosoft Azure وGoogle Cloud، إضافةً إلى خدمات مثل Kubernetes وGitHub وCloudflare وقواعد بيانات كثيرة. وبفضل نموذج الإضافات هذا، تستطيع الأداة وسير العمل نفسهما إدارة أنظمة شديدة التباين. فأنت تعرّف أي الموفّرين تحتاج، ويُنزّلهم Terraform أثناء init، ومن ثم تصف الموارد باستخدام أنواع موارد ذلك الموفّر. وهذا الاتساع من أهم أسباب تحوّل Terraform إلى معيار في الصناعة، وسبب ظهوره المتكرر في عدّة مهندس السحابة.
ما هي حالة Terraform؟
الحالة هي المكان الذي يستمد منه Terraform كثيرًا من قوته، وهي أيضًا حيث يواجه المبتدئون أكبر قدر من المتاعب. فعندما ينشئ Terraform موارد، يسجّل ما صنعه في ملف حالة يربط إعدادك بالكائنات في العالم الحقيقي. وفي التشغيل التالي، يقرأ Terraform الحالة لفهم ما هو موجود مسبقًا، لكي يحسب الحد الأدنى من التغييرات بدلًا من إعادة إنشاء كل شيء.
وتترتّب على ذلك قاعدتان عمليتان. أولًا، قد يحتوي ملف الحالة على بيانات حساسة، مثل كلمات مرور قواعد البيانات، لذا يجب حمايته. ثانيًا، عندما يشترك فريق في بنية تحتية، يجب أن يستخدم الجميع الحالة نفسها، لذا تُخزَّن في خلفية بعيدة (على سبيل المثال، تخزين الكائنات السحابي) مع قفل لمنع شخصين من تطبيق تغييرات متعارضة في آنٍ واحد. وتعديل الحالة يدويًا محفوف بالمخاطر ويُتجنَّب عمومًا. واحترام الحالة هو أهم عادة منفردة للعمل مع Terraform بأمان.
كيف يبدو الإعداد البسيط؟
صُمّمت HCL لتكون قابلة للقراءة. فالإعداد يعرّف الموارد في كتل، لكل منها نوع واسم وإعدادات. وتشير إلى مورد من مورد آخر حتى يستطيع Terraform تحديد الترتيب الصحيح، على سبيل المثال إنشاء شبكة قبل الخادم الذي يستخدمها. ويمكنك أيضًا استخدام المتغيرات لتجنّب ترميز القيم مباشرةً، والمخرجات لإظهار نتائج مفيدة مثل عنوان IP، والوحدات (modules) لتجميع مجموعات من الموارد وإعادة استخدامها. ولأن الملفات نص صرف، فهي توجد ضمن التحكم في الإصدارات إلى جانب كل شيء آخر، وهو ما يرتبط طبيعيًا بدليلنا عن ما هو Git.
Terraform مقابل الأدوات الأخرى
كثيرًا ما يُقارن Terraform بأدوات البنية التحتية الأخرى، والفروق مهمة عند اختيار الأداة المناسبة.
| الأداة | الغرض الأساسي | النهج | الاستخدام النموذجي مع Terraform |
|---|---|---|---|
| Terraform | توفير البنية التحتية | تعريفي، متعدد السُحب | طبقة التوفير نفسها |
| OpenTofu | توفير البنية التحتية | تعريفي؛ نسخة متفرّعة مفتوحة المصدر من Terraform | بديل متوافق للفرق التي تفضّل MPL 2.0 |
| Ansible | ضبط الأجهزة الموجودة | إجرائي، بلا وكيل | ضبط الخوادم بعد أن ينشئها Terraform |
| CloudFormation | توفير البنية التحتية | تعريفي، خاص بـ AWS فقط | بديل أصيل لـ AWS |
| Pulumi | توفير البنية التحتية | تعريفي عبر لغات عامة الأغراض | بديل للفرق التي تفضّل Python وTypeScript وغيرها |
نقطة أساسية لعام 2026: في أغسطس 2023، غيّرت HashiCorp رخصة Terraform من MPL 2.0 مفتوحة المصدر إلى رخصة المصدر التجاري (BSL)، التي تقيّد استخدام البرنامج لبناء منتجات منافسة مباشرة. وردًّا على ذلك، أنشأت عدة شركات OpenTofu، وهي نسخة متفرّعة بموجب MPL 2.0 تُدار الآن من قِبل مؤسسة Linux وقُبلت في مؤسسة Cloud Native Computing Foundation عام 2025. ويقرأ OpenTofu HCL نفسها، ويستخدم الموفّرين أنفسهم، ويكتب ملف حالة متوافقًا، لذا فهما متبادلان لمعظم المستخدمين في العمل اليومي. واختيار الفريق لأحدهما قرار يتعلق بالحوكمة والترخيص إلى حد كبير. وعامِل أرقام الإصدارات المحددة باعتبارها سريعة التغير وتحقّق من الإصدار الحالي قبل الاعتماد على ميزة بعينها.
ما هي حالات الاستخدام الشائعة لـ Terraform؟
- إقامة بيئات سحابية مثل التطوير والتجهيز والإنتاج تكون متطابقة وقابلة لإعادة الإنتاج.
- عمليات نشر متعددة السُحب أو هجينة، باستخدام سير عمل واحد عبر أكثر من موفّر.
- بيئات قابلة للتخلص منها للاختبار أو العروض التوضيحية يمكن إنشاؤها وتدميرها عند الطلب.
- إدارة الخدمات المساندة مثل سجلات DNS وسياسات الوصول وعناقيد Kubernetes.
ولأنه يعرّف بيئات كاملة كشيفرة، فإن Terraform مهارة أساسية لأي شخص يصمّم أنظمة كبيرة، وهذا سبب ظهوره في مسارات نحو أن تصبح مهندس حلول سحابية وفي ممارسات الموثوقية الموصوفة في مقارنتنا بين DevOps وSRE.
ما هي الوحدات (modules)، ولماذا تستخدمها الفرق؟
مع نمو الإعدادات، يصبح نسخ الكتل نفسها عبر المشاريع غير قابل للإدارة. وتحلّ الوحدات ذلك بتجميع مجموعة من الموارد في وحدة قابلة لإعادة الاستخدام ذات مدخلات ومخرجات محدّدة. فعلى سبيل المثال، قد يبني فريق وحدة تنشئ شبكة قياسية بالشبكات الفرعية والتوجيه وقواعد الأمان الصحيحة، ثم يعيد استخدامها عبر كل بيئة بمجرد تمرير متغيرات مختلفة. وتشجّع الوحدات على الاتساق، وتقلّل أخطاء النسخ واللصق، وتتيح للفريق ترميز أفضل ممارساته مرةً واحدة. وتستضيف السجلات العامة آلاف الوحدات المجتمعية للأنماط الشائعة، وإن كانت فرق الإنتاج تكتب وحداتها الخاصة وتُخضعها للتحكم في الإصدارات غالبًا. والتفكير بمنطق الوحدات علامة على النضج مع Terraform، وهو يحاكي كيفية تجزئة البرمجيات الجيدة إلى مكوّنات قابلة لإعادة الاستخدام.
ما هي أبرز فوائد Terraform ومقايضاته؟
تفسّر مواطن قوة Terraform شعبيته، لكن يجدر أن نكون صريحين بشأن المقايضات أيضًا.
- فائدة: اتساق متعدد السُحب. يدير سير عمل ولغة واحدة منصات كثيرة، فلا تضطر الفرق إلى تعلّم أداة جديدة لكل موفّر.
- فائدة: معاينات آمنة. تُظهر خطوة plan كل تغيير قبل حدوثه، ما يمنع أخطاءً مكلفة كثيرة.
- فائدة: قابلية التكرار والتدقيق. لأن كل شيء شيفرة ضمن التحكم في الإصدارات، تكون البيئات قابلة لإعادة الإنتاج وكل تغيير قابل للتتبع.
- مقايضة: تعقيد الحالة. إدارة الحالة والخلفيات والقفل على نحو صحيح تتطلب انضباطًا وهي أكثر مصادر المشكلات الواقعية شيوعًا.
- مقايضة: منحنى التعلّم. تحتاج العقلية التعريفية والتفاصيل الخاصة بكل موفّر إلى وقت لاستيعابها، وخصوصًا لمن اعتادوا النقر في وحدات التحكم.
- مقايضة: الانحراف (drift). إذا غيّر أحدهم موردًا يدويًا خارج Terraform، فقد يتباعد العالم الحقيقي عن الحالة، ما يتطلب عناية للتوفيق بينهما.
كيف يندرج Terraform ضمن خط أنابيب CI/CD؟
في الفرق الناضجة، نادرًا ما يُشغَّل Terraform من حاسوب محمول لإجراء تغييرات الإنتاج. بل يوجد الإعداد في مستودع Git، ويشغّل خط أنابيب التكامل المستمر terraform plan تلقائيًا عند كل طلب سحب حتى يرى المراجعون بدقة ما الذي سيتغير. وبعد الموافقة، تشغّل خطوة آلية terraform apply على البيئة المستهدفة. وهذا يجلب إلى البنية التحتية انضباط المراجعة والاختبار والتدقيق نفسه الذي تطبّقه الفرق مسبقًا على شيفرة التطبيقات. كما يفرض أن توجد الحالة في خلفية بعيدة مشتركة بدلًا من جهاز أي فرد، وهو أمر لا غنى عنه عندما يشارك أكثر من شخص واحد. وهذا النهج القائم على الأتمتة أولًا سمة مميّزة لفرق المنصات الحديثة.
كيف ينبغي للمبتدئ أن يبدأ مع Terraform؟
ابدأ بموفّر واحد تفهمه مسبقًا، ويفضّل أن يكون سحابةً استخدمتها عبر وحدة تحكمها. ثبّت Terraform (أو OpenTofu)، وأنشئ موردًا صغيرًا واحدًا مثل حاوية تخزين، وامرّ بـ init وplan وapply لتتحسّس سير العمل. وانتبه جيدًا لمخرجات plan قبل كل apply؛ فقراءة الخطط بعناية عادة مهنية تستحق البناء مبكرًا. خزّن إعدادك في Git منذ اليوم الأول، وأبقِ الأسرار خارج ملفاتك، وانتقل إلى خلفية بعيدة للحالة بمجرد مشاركة أكثر من شخص. وتجنّب إغراء نسخ إعدادات كبيرة معقّدة لا تفهمها؛ فالخطوات الصغيرة التي تستطيع شرحها ستعلّمك أكثر بكثير.
هل يستحق Terraform التعلّم؟
بالنسبة لأي شخص متجه إلى DevOps أو السحابة أو هندسة المنصات، فإن Terraform واحد من أقيم المهارات المتاحة. فهو مُعتمَد على نطاق واسع، وقابل للنقل عبر السُحب، ومحوري في كيفية بناء الفرق الحديثة للبنية التحتية وتغييرها بأمان. ويحتاج النموذج التعريفي إلى وقت قصير لاستيعابه، وتتطلب إدارة الحالة احترامًا، لكن المردود كبير: إذ تكتسب القدرة على وصف بيئات كاملة كشيفرة قابلة للمراجعة والتكرار. وسواء استخدمت في النهاية Terraform أو نسخته المتفرّعة OpenTofu، فإن المفاهيم تنتقل بينهما، ما يجعل ما تتعلّمه راسخًا بغض النظر عن كيفية تطوّر الأدوات.
Ready to earn your certification?
Boost eLearning offers Live Labs, a Pass Guarantee, and online, live virtual, and on-site delivery.