أسطورة تورماف - الأوامر المفيدة وال أمثلة

قائمة بأوامر تيرافورم جميعها

Page content

هنا تجد قائمة مصطلحات Terraform التي تحتوي على الأوامر الأساسية، العناصر التكوينية، إدارة الموارد، الوحدات، المتغيرات، إدارة الحالة، والمبادئ المثلى.

Terraform هو أداة مفتوحة المصدر لبناء البنية التحتية ككود (IaC) تم تطويرها بواسطة HashiCorp, وهي تمكن المستخدمين من تعريف البنية التحتية وإنشائها عبر مزودي السحابة المتعددة (مثل AWS، Azure، GCP) باستخدام ملفات تكوين إعلانية. الغرض الرئيسي منها هو تلقائية بناء البنية التحتية، ضمان التماثل، وتقليل الأخطاء اليدوية. يدعم Terraform السحابة المتعددة، الوحدات، والتدفق المعتمد على الحالة، مما يجعلها حجر أساس في ممارسات DevOps الحديثة.

طالب يستخدم Terraform

الفوائد الرئيسية لـ Terraform:

  • اللغة الإعلانية: تحديد الحالة المرغوبة للبنية التحتية في الكود.
  • الاستقلالية عن المزود: تعمل مع AWS، Azure، GCP، Kubernetes، وغيرها.
  • إدارة الحالة: تتبع تغييرات البنية التحتية لتجنب الصراعات.

دليل التثبيت والتكوين

https://developer.hashicorp.com/terraform/tutorials#get-started

عملية تثبيت Terraform بسيطة جداً.

  • Linux (Ubuntu/Debian):

    wget -O - https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg
    echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(grep -oP '(?<=UBUNTU_CODENAME=).*' /etc/os-release || lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list
    sudo apt update && sudo apt install terraform
    
  • Windows (WSL):

    wget -O terraform.zip https://releases.hashicorp.com/terraform/1.5.5/terraform_1.5.5_windows_amd64.zip
    unzip terraform.zip
    
  • macOS (Homebrew):

    brew install terraform
    

التحقق

terraform --version

أوامر CLI لـ Terraform

هنا قائمة بأوامر Terraform:

الأوامر الوصف
terraform init تهيئة دليل Terraform الجديد أو الحالي
terraform validate تحقق من صحة التكوين
terraform plan عرض خطة التنفيذ دون إجراء تغييرات
terraform apply تطبيق التغييرات المطلوبة للوصول إلى الحالة المرغوبة
terraform destroy تدمير البنية التحتية المدارة بواسطة Terraform
terraform fmt إعادة تشكيل الملفات التكوينية إلى النمط القياسي
terraform show عرض الحالة الحالية أو الخطة
terraform refresh تحديث الحالة مع البنية التحتية الفعلية
terraform providers عرض المزودين المستخدمين في التكوين
terraform graph تصور الاعتماديات بين الموارد كرسم بياني
terraform workspace list قائمة بكل المساحات المتاحة
terraform workspace new إنشاء مساحة جديدة
terraform workspace select الانتقال إلى مساحة محددة
terraform workspace show عرض اسم المساحة الحالية
terraform workspace delete حذف مساحة محددة
terraform output عرض القيم الناتجة من ملف الحالة
terraform import استيراد موارد موجودة إلى Terraform
terraform taint علامات موارد لتجديدها في التطبيق التالي
terraform untaint إزالة علامات التلوث من الموارد
terraform state list قائمة الموارد في ملف الحالة
terraform state show عرض خصائص مورد واحد في الحالة

العناصر الأساسية للتكوين

ممتددات الملف

  • .tf: الملفات التكوينية الرئيسية (لغة HCL)
  • .tfvars: قيم المتغيرات

أنواع كتل Terraform

  • مثال على المزود
    provider "aws" {
      region = "us-east-1"
    }
    
  • مثال على الموارد
    resource "aws_instance" "web" {
      ami           = "ami-0abcdef"
      instance_type = "t2.micro"
    }
    
  • مثال على المتغير
    variable "instance_count" {
      type    = number
      default = 2
    }
    
  • مثال على الإخراج
    output "instance_ip" {
      value = aws_instance.web.public_ip
    }
    
  • مثال على الوحدة
    module "vpc" {
      source = "./modules/vpc"
      cidr_block = var.vpc_cidr
    }
    

العمل مع المتغيرات

  • إعلان المتغيرات
    variable "region" {
      description = "منطقة AWS"
      default     = "us-east-1"
    }
    
  • تعيين القيم
    • من خلال CLI: terraform apply -var="region=us-west-2"
    • من خلال ملف tfvars: terraform apply -var-file="prod.tfvars"
  • الأنواع: string, number, bool, list, map, object

إدارة الحالة

  • ملف الحالة: terraform.tfstate
  • الحالة البعيدة (مثال S3)
    backend "s3" {
      bucket = "my-tf-state"
      key    = "state.tfstate"
      region = "us-east-1"
    }
    
  • عرض الحالة:
    terraform show
    terraform state list

الحلقات والشروط

  • العد
    resource "aws_instance" "web" {
      count = 3
      ...
    }
    
  • لكل
    resource "aws_s3_bucket" "b" {
      for_each = var.bucket_names
      bucket   = each.value
    }
    
  • الشروط
    instance_type = var.env == "prod" ? "t2.large" : "t2.micro"
    

الوظائف

  • ال삽ط في السلسلة:
    resource "aws_s3_bucket" "example" { bucket = "my-bucket-${var.env}" }
  • أمثلة على القوائم، الخرائط:
    locals {
      my_map = { a = 1, b = 2 }
    }
    

المحفّزات

تُستخدم لتهيئة الموارد. مثال:

resource "aws_instance" "web" {
  ...
  provisioner "local-exec" {
    command = "echo Instance created"
  }
}

الممارسات المثلى

  • التحكم في الإصدار لكل ملف .tf
  • تثبيت إصدارات المزود لضمان عمليات النشر المتسقة
  • الخلفية البعيدة لإدارة الحالة (S3، Azure Blob، إلخ)
  • تشفير ملفات الحالة في الخلفيات البعيدة
  • التقسيم إلى وحدات باستخدام وحدات قابلة لإعادة الاستخدام
  • توثيق التكوينات
  • الاختبار في البيئة التمهيدية قبل الإنتاج

المراجع الإضافية

  • المساعدة: terraform --help أو [أوامر] --help للحصول على مساعدة محددة بالأوامر
  • التصحيح: ضع TF_LOG=INFO أو TF_LOG=DEBUG للحصول على سجلات مفصلة
  • التنسيق: terraform fmt

تُقدم هذه القائمة المرجعية سريعة الوصول إلى الجوانب الأكثر شيوعًا والمتقدمة من استخدام Terraform - من الأوامر إلى الممارسات المثلى - مما يجعلها عملية لكل من المبتدئين والمستخدمين المتقدمين. أتمنى لكم يومًا جميلًا!

روابط مفيدة