إدارة حالة Terraform والواجهات الخلفية البعيدة
افهم حالة Terraform، وتهيئة الواجهات الخلفية البعيدة الآمنة، والتعامل مع قفل الحالة، وتجنّب تلفها في مسارات IaC التعاونية
إدارة حالة Terraform والواجهات الخلفية البعيدة درس مجاني في CI/CD with GitHub Actions & DevOps Pipelines على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في CI/CD with GitHub Actions & DevOps Pipelines، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة CI/CD with GitHub Actions & DevOps Pipelines 4 دروس في المجموع.
ما حالة Terraform
يسجّل Terraform ما أنشأه في ملف حالة (terraform.tfstate). ويربط هذا الملف إعداداتكم بموارد السحابة الفعلية.
من دون الحالة، لن يعرف Terraform الموارد الموجودة مسبقًا، وقد ينشئ نسخًا مكررة أو يفشل في تحديثها.
لماذا تفشل الحالة المحلية مع الفرق
تُخزَّن الحالة على القرص المحلي افتراضيًا. وهذا لا يناسب العمل ضمن فريق أو في CI:
- لا يستطيع الآخرون رؤية حالتكم
- قد تؤدي عمليات التشغيل المتزامنة إلى إتلاف الملف
- يحتوي الملف على أسرار بنص واضح، وقد يُضاف إلى المستودع بالخطأ
الحل هو الواجهة الخلفية البعيدة.
الواجهات الخلفية البعيدة
تخزّن الواجهة الخلفية البعيدة الحالة في موقع مشترك ودائم، مثل حاوية S3 أو Azure Blob أو GCS أو Terraform Cloud.
يوفّر ذلك مصدرًا واحدًا موثوقًا للحالة الحالية للبنية التحتية لكل عملية تشغيل في المسار.
terraform {
backend "s3" {
bucket = "my-tf-state"
key = "prod/terraform.tfstate"
region = "us-east-1"
}
}قفل الحالة
إذا نفّذت عمليتا تشغيل في المسار عملية التطبيق في الوقت نفسه، فقد تتسببان في إتلاف الحالة. يمنع قفل الحالة ذلك بالسماح بعملية كتابة واحدة فقط في كل مرة.
مع الواجهة الخلفية S3، يوفر جدول DynamoDB القفل. أما Terraform Cloud فينفّذ القفل تلقائيًا.
backend "s3" {
bucket = "my-tf-state"
key = "prod/terraform.tfstate"
dynamodb_table = "tf-locks"
}تشفير الحالة
غالبًا ما تحتوي ملفات الحالة على قيم حساسة مثل كلمات المرور والمفاتيح. احرصوا دائمًا على تشفير الحالة أثناء التخزين.
بالنسبة إلى الواجهة الخلفية S3، فعّلوا تشفير الحاوية واضبطوا encrypt = true في إعداد الواجهة الخلفية.
backend "s3" {
bucket = "my-tf-state"
key = "prod/terraform.tfstate"
encrypt = true
}مساحات العمل للبيئات
تتيح مساحات العمل في Terraform لإعداد واحد إدارة ملفات حالة متعددة، ملف واحد لكل بيئة.
بدّلوا بينها حتى لا تشترك بيئتا التدريج والإنتاج في الحالة نفسها.
terraform workspace new staging
terraform workspace select productionالتخطيط والتطبيق في CI
في المسار، شغّلوا terraform plan لمعاينة التغييرات، وغالبًا ما يكون ذلك في طلبات السحب، ثم شغّلوا terraform apply لتنفيذها عند الدمج في main.
احفظوا الخطة في ملف حتى يستخدم التطبيق بالضبط ما تمت مراجعته.
terraform plan -out=tfplan
terraform apply -auto-approve tfplanفحص الحالة
يمكنكم الاستعلام عن الحالة لمعرفة ما يتتبعه Terraform.
terraform state list— سرد الموارد المُدارةterraform state show <addr>— عرض تفاصيل مورد واحد
تجنبوا تعديل الحالة يدويًا، واستخدموا الأوامر بدلًا من ذلك.
terraform state list
terraform state show aws_instance.webاستيراد الموارد الحالية
إذا أُنشئ مورد خارج Terraform، فأدخلوه ضمن الإدارة باستخدام terraform import بدلًا من إعادة إنشائه.
يمنع ذلك التكرار المدمّر عند اعتماد IaC على بنية تحتية موجودة.
terraform import aws_s3_bucket.logs my-existing-bucketمعالجة الانحراف
يحدث الانحراف عندما يغيّر أحدهم البنية التحتية يدويًا، فلا تعود الحالة مطابقة للواقع.
شغّلوا terraform plan بانتظام لاكتشاف الانحراف، ثم أعيدوا التطبيق لاستعادة الحالة أو حدّثوا الإعدادات لتطابق الواقع.
لا تُدرج الحالة في المستودع
حتى مع استخدام واجهة خلفية بعيدة، تأكدوا من تجاهل ملفات الحالة والخطط المحلية في Git. فهي تحتوي على أسرار.
يحميكم ملف .gitignore جيد من التسريبات غير المقصودة.
# .gitignore
*.tfstate
*.tfstate.*
tfplan
.terraform/تحقق سريع
اختبروا مدى فهمكم لحالة Terraform.
مراجعة
تعلّمتم إدارة حالة Terraform بأمان.
- تربط الحالة الإعدادات بالموارد الفعلية؛ فلا تعدّلوها يدويًا أبدًا
- تتيح الواجهات الخلفية البعيدة مشاركة الحالة بين الفريق وCI
- يحمي القفل والتشفير من التلف والتسريبات
- تعزل مساحات العمل البيئات، ويكتشف
planالانحراف
تُعدّ الإدارة المتينة للحالة أساس مسارات IaC الموثوقة.
الأسئلة الشائعة
هل درس «إدارة حالة Terraform والواجهات الخلفية البعيدة» مجاني؟
نعم — نص درس «إدارة حالة Terraform والواجهات الخلفية البعيدة» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة CI/CD with GitHub Actions & DevOps Pipelines، انتقل إلى CoddyKit PRO. تتضمن دورة CI/CD with GitHub Actions & DevOps Pipelines 4 دروس في المجموع.
ماذا ستتعلم في «إدارة حالة Terraform والواجهات الخلفية البعيدة»؟
افهم حالة Terraform، وتهيئة الواجهات الخلفية البعيدة الآمنة، والتعامل مع قفل الحالة، وتجنّب تلفها في مسارات IaC التعاونية تتمرن على CI/CD with GitHub Actions & DevOps Pipelines مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ CI/CD with GitHub Actions & DevOps Pipelines؟
لا تُشترط خبرة سابقة. CI/CD with GitHub Actions & DevOps Pipelines على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.
كم من الوقت يستغرق درس «إدارة حالة Terraform والواجهات الخلفية البعيدة»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس CI/CD with GitHub Actions & DevOps Pipelines هذا؟
نعم. كل درس في CI/CD with GitHub Actions & DevOps Pipelines يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- IaC باستخدام Terraform وGitHub Actions
- إدارة الموارد السحابية
- أتمتة تحديثات البنية التحتية
- إدارة حالة Terraform والواجهات الخلفية البعيدة