Terraform من HashiCorp هو أشهر أدوات البنية التحتية كرمز (IaC). تبني هذه الصفحة على المفهوم العامّ في ما هي البنية التحتية كرمز؟، وتشرح كيف تُطبّق تلك المبادئ عمليًا في Terraform تحديدًا — دون أن تكون درسًا تطبيقيًا كاملًا بعد.
ما هو Terraform؟
Terraform أداة تصريحية ومفتوحة المصدر لتوفير البنية التحتية وإدارتها. تصف فيها البنية المطلوبة بلغة تُسمّى HCL (HashiCorp Configuration Language)، فيتكفّل Terraform بإنشاء تلك الموارد لدى مزوّدك وتحديثها لتطابق وصفك.
ميزته الأبرز أنه متعدّد المزوّدين (Multi-cloud): بالمنطق نفسه واللغة نفسها يمكنك إدارة موارد على AWS و Azure و Google Cloud وغيرها، عبر «مزوّدين» (Providers) لكل منصّة.
المفاهيم الثلاثة الأساسية
- المزوّد (Provider): إضافة تتيح لـ Terraform التحدّث مع منصّة معيّنة (مثل مزوّد
aws). هو الجسر بين كودك وواجهة برمجة المزوّد. - المورد (Resource): وحدة بنية تحتية تصفها (خادم، شبكة، قاعدة بيانات...). تكتب الحالة المطلوبة لكل مورد.
- الحالة (State): ملف يحتفظ فيه Terraform بسجلّ ما يُديره من موارد، ليعرف ما تغيّر وما يجب إنشاؤه أو تعديله أو حذفه.
مثال توضيحي بلغة HCL يصف خادمًا واحدًا:
# المزوّد: أي منصّة نتحدّث إليها
provider "aws" {
region = "us-east-1"
}
# المورد: الحالة المطلوبة (خادم افتراضي)
resource "aws_instance" "web" {
ami = "ami-xxxx" # قيمة توضيحية؛ المعرّف الحقيقي يختلف حسب المنطقة
instance_type = "t3.micro"
tags = { Name = "web-server" }
}
ℹ️ المثال أعلاه توضيحي للمفهوم؛ كتابة إعداد قابل للتشغيل خطوةً بخطوة تأتي في صفحات لاحقة.
سير العمل: write → init → plan → apply
دورة العمل النموذجية في Terraform:
write: تصف البنية في ملفات.tf.init: يهيّئ المجلد ويُنزّل المزوّدين المطلوبين.plan: يعرض ما الذي سيتغيّر قبل تنفيذ أي شيء — الفرق بين الحالة الفعليّة والمطلوبة. هذه خطوة الأمان الأهمّ.apply: بعد مراجعتك، يُنفّذ التغييرات لتطابق الوصف.
وعند الحاجة، يزيل destroy كل الموارد المُدارة. تجسّد هذه الدورة مبدأ الثبات عند التكرار (Idempotency): تشغيل apply على وصفٍ لم يتغيّر لا يُحدث تغييرًا.
Terraform مقابل البدائل
Terraform ليس الخيار الوحيد؛ فهمُ موقعه يساعدك على الاختيار:
- AWS CloudFormation: تصريحي أيضًا لكنّه خاصّ بـ AWS فقط.
- Pulumi: يتيح وصف البنية بلغات برمجة عامّة (TypeScript، Python...) بدل لغة مخصّصة.
- Ansible: أقرب إلى إدارة الإعدادات (Configuration Management) وأكثر ميلًا للأسلوب الأمري.
ℹ️ بعد تغيير في رخصة Terraform سنة 2023، ظهر مشروع OpenTofu كنسخة مفتوحة متوافقة تديرها مؤسّسة Linux Foundation. الأوامر والمفاهيم متطابقة إلى حدّ كبير، وما تتعلّمه هنا ينطبق على كليهما.
الخطوات التالية
بعد هذه المقدّمة، ستتعمّق في: ملفات الحالة (State) وكيفية إدارتها بأمان، ثم المزوّدين والوحدات (Modules) لإعادة الاستخدام، وصولًا إلى تطبيق عملي. ولا تنسَ الأساس المفاهيمي الأوسع في ما هي البنية التحتية كرمز؟، والتطبيق ضمن خطّ CI/CD في البنية التحتية كرمز في DevOps.