أسطورة تورماف - الأوامر المفيدة وال أمثلة
قائمة بأوامر تيرافورم جميعها
هنا تجد قائمة مصطلحات Terraform التي تحتوي على الأوامر الأساسية، العناصر التكوينية، إدارة الموارد، الوحدات، المتغيرات، إدارة الحالة، والمبادئ المثلى.
Terraform هو أداة مفتوحة المصدر لبناء البنية التحتية ككود (IaC) تم تطويرها بواسطة HashiCorp, وهي تمكن المستخدمين من تعريف البنية التحتية وإنشائها عبر مزودي السحابة المتعددة (مثل AWS، Azure، GCP) باستخدام ملفات تكوين إعلانية. الغرض الرئيسي منها هو تلقائية بناء البنية التحتية، ضمان التماثل، وتقليل الأخطاء اليدوية. يدعم Terraform السحابة المتعددة، الوحدات، والتدفق المعتمد على الحالة، مما يجعلها حجر أساس في ممارسات DevOps الحديثة.
الفوائد الرئيسية لـ 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"
- من خلال CLI:
- الأنواع:
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 - من الأوامر إلى الممارسات المثلى - مما يجعلها عملية لكل من المبتدئين والمستخدمين المتقدمين. أتمنى لكم يومًا جميلًا!
روابط مفيدة
- https://developer.hashicorp.com/terraform
- قائمة مصطلحات Docker
- قائمة مصطلحات Docker Compose - الأوامر الأكثر فائدة مع أمثلة
- قائمة مصطلحات Kubernetes
- نشر مشروع Flutter مع خلفية إلى AWS Amplify
- نشر موقع ويب تم إنشاؤه بواسطة Hugo إلى AWS S3
- أداء AWS Lambda: JavaScript مقابل Python مقابل Golang
- Lambda متعددة الطبقات مع AWS SAM و Python
- AWS SAM + AWS SQS + Python PowerTools
- Minio كخيار بديل لـ AWS S3. مقدمة وتركيب Minio