What is Terraform

ibrahim el-otmani | Aug 15, 2025 min read

Terraform: الأداة لمهندسي DevOps

مرحبا بالدراري و الدريات, اليوم غادي نهضرو على واحد الأداة لي ولات ضرورية فالعالم ديال DevOps، سميتها Terraform. يلا كنتي خدام فالدومين، ولا يالله بادي، ضروري تكون سمعتي بيها. أجي نشوفو شنو هي، علاش مهمة، وكيفاش كتخدم.


شنو هو تيرافورم Terraform؟

بكل بساطة، Terraform هي أداة ديال Infrastructure as Code أو IaC، صايباتها شركة سميتها HashiCorp. شنو كتعني IaC؟ كتعني أنك مكتعاودش تقاد VMs، و Databases، و Networks، وداكشي لاخر كولو بيديك فواجهات بحال ديال AWS Console ولا Azure Portal. لا، كتولي تكتب code كيوصف داكشي لي بغيتي، وterraform هو لي كيتكلف يقادو ليك.

كتكتب ليه: “بغيت سيرفر بهاد المواصفات، و database بهاد الحجم، و ربطهوم بهاد الشبكة”، وهو كيمشي عند الـ Cloud Provider ديالك (بحال AWS, Azure, GCP) وكيصايب ليك داكشي بالضبط كيفما طلبتي.


علاش بالضبط تيرافورم؟

كاينين أدوات خرا بحال CloudFormation ديال AWS ولا ARM Templates ديال Azure، ولكن terraform عندو بزاف ديال الميزات لي كيخليوه هو اللول:

  • Declarative: مكتعطيهش الأوامر خطوة بخطوة (imperative). نتا كتوصف ليه الحالة النهائية (end state) لي بغيتي توصل ليها، وهو كيدبر راسو كيفاش يوصل ليها. بحالا كتقول لشي واحد صايب ليا بيت فيه 3 ديال البيوت و كوزينة، مكتشرحش ليه كيفاش يبني الحيط و يركب الشرجم.
  • Multi-Cloud: هادي هي القوة الكبيرة ديالو. تقدر تخدم بيه مع AWS, Azure, Google Cloud, DigitalOcean, وحتى مع خدمات خرا بحال Kubernetes و Datadog… كلشي بملف واحد ونفس الطريقة ديال الخدمة.
  • State Management: تيرافورم كيحتفظ بواحد الفيشي سميتو terraform.tfstate. هاد الفيشي فيه معلومات على كاع داكشي لي صايبتي. بهاد الطريقة، كيكون عارف شنو عندك ديجا، وشنو خاصو يبدل، يزيد، ولا ينقص. هادشي كيخليه ذكي وكيمنع الأخطاء.
  • Execution Plan: قبل ما طبق أي تغيير، terraform كيوريك واحد الخطة مفصلة (plan) ديال داكشي لي غادي يدير. كيقول ليك: “راني غادي نمسح هاد السيرفر، وغادي نزيد هاد جوج، وغادي نبدل السمية ديال هادي”. هكا كتعرف بالضبط شنو غادي يوقع قبل ما يوقع، وكتفادى الكوارث.

كيفاش خدام تيرافورم؟ The Workflow

الخدمة بتيرافورم ساهلة وكتمر من 4 ديال المراحل أساسية:

  1. Write: كتكتب الكود ديالك فملفات كتسالي بـ .tf. اللغة باش مكتوب سميتها HCL (HashiCorp Configuration Language)، ساهلة بزاف وقريبة للـ JSON.
  2. terraform init: هاد الكوموند كتوجد ليك المشروع ديالك. كتيليشارجي الـ “providers” لي غتحتاج (مثلا provider ديال AWS باش تهضر مع AWS API). كديرها مرة وحدة فالبداية ديال المشروع.
  3. terraform plan: كيفما قلنا، هادي كتعطيك الخطة. كتوريك شنو غادي يتبدل بلا ما تبدل والو بصح. مهمة بزاف باش تراجع شغلك.
  4. terraform apply: يلا عجباتك الخطة وكنتي متأكد، كتكتب هاد الكوموند باش تيرافورم يطبق دوك التغييرات ويصايب ليك داكشي لي بغيتي فـالـ Cloud.

و يلا بغيتي تمسح داكشي كامل لي صايبتي، كاين كوموند: terraform destroy.


مثال بسيط: نصايبو S3 Bucket فـ AWS

أجي نشوفو مثال بسيط بزاف. بغينا نصايبو واحد الـ Storage Bucket فـ AWS S3.

غادي تصايب واحد الفيشي سميتو main.tf وغادي تكتب فيه هاد الكود:

# 1. kan7addo l provider li ghadi nkhdmo bih w region 
provider "aws" {
  region = "eu-west-1"
}

# 2. kan7addo l resource li ghadi nsayboha
resource "aws_s3_bucket" "my_first_bucket" {
  bucket = "had-lbucket-dyali-unique-ism" # khas smiya tkon unique fl 3alam kaml

  tags = {
    Name        = "My first Terraform bucket"
    Environment = "Dev"
  }
}

صافي! دابا غتمشي للترمينال فداك الدوسي ودير:

  1. terraform init

  2. terraform plan

  3. terraform apply

ومبروك عليك! هانتا صايبتي أول حاجة ليك فـ AWS بالكود.

تحياتي، كان معاكم براهيم