موفرا التهيئة `local-exec` و`remote-exec`
نفّذ موفري التهيئة `local-exec` و`remote-exec` لتشغيل الأوامر على الجهاز الذي يشغّل Terraform أو على الموارد التي أُنشئت، على التوالي.
موفرا التهيئة `local-exec` و`remote-exec` درس مجاني في DevOps Bootcamp على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في DevOps Bootcamp، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة DevOps Bootcamp 4 دروس في المجموع.
تعرّفوا على Provisioners في Terraform
ماذا لو احتجتم إلى تشغيل برنامج نصي أو أمر بعد أن ينشئ Terraform موردًا؟ هنا يأتي دور provisioners!
تتيح لكم Provisioners تنفيذ إجراءات على الجهاز المحلي أو على مورد بعيد باعتبارها جزءًا من دورة حياته. وهي تسد الفجوة بين إنشاء البنية التحتية والإعداد الأولي للبرمجيات.
فكّروا فيها على أنها خطافات تتيح لكم تخصيص مواردكم فور إنشائها.
`local-exec`: التشغيل محليًا
يشغّل Provisioner local-exec الأوامر على الجهاز الذي يُنفّذ عليه Terraform.
ويفيد ذلك في مهام مثل:
- إنشاء ملفات إعدادات محليًا.
- تشغيل برامج نصية أو أدوات محلية.
- تنفيذ عمليات تنظيف بعد تدمير المورد.
وهو مناسب تمامًا للإجراءات التي لا يلزم تنفيذها على مورد السحابة نفسه.
مثال أساسي على `local-exec`
لنرَ كيف ينشئ local-exec ملفًا بسيطًا على جهازكم المحلي بعد إنشاء مورد فارغ.
إن null_resource عنصر نائب لا ينشئ أي شيء في السحابة، لكنه مفيد لتشغيل Provisioners.
resource "null_resource" "local_file_creator" {
provisioner "local-exec" {
command = "echo 'Local file created by Terraform!' > local_output.txt"
}
triggers = {
always_run = timestamp()
}
}متى تستخدمون `local-exec`
يُعد local-exec مناسبًا لما يلي:
- إشعارات ما بعد النشر: إرسال بريد إلكتروني أو رسالة عبر Slack.
- إنشاء الملفات المحلية: إنشاء ملفات جرد لـ Ansible أو أدوات أخرى.
- فحوصات ما قبل النشر: تشغيل برامج نصية للتحقق محليًا.
- تشغيل CI/CD: بدء مسار بعد إجراء تغييرات على البنية التحتية.
تذكّروا أنه يعمل من المكان الذي تشغّلون منه terraform apply.
`remote-exec`: التشغيل على المورد
على عكس local-exec، يشغّل Provisioner remote-exec الأوامر على المورد البعيد نفسه.
وهذا أمر بالغ الأهمية لمهام الإعداد الأولي على خادم أُنشئ حديثًا، مثل:
- تثبيت حزم البرمجيات (مثل خادم ويب أو قاعدة بيانات).
- إعدادات نظام التشغيل.
- نشر تعليمة برمجية للتطبيق.
ويتطلب اتصالًا بالشبكة (مثل SSH لنظام Linux أو WinRM لنظام Windows) بالمورد المستهدف.
الاتصال من أجل `remote-exec`
لكي يعمل remote-exec، يحتاج Terraform إلى الاتصال بالمورد لديكم.
تشمل أنواع الاتصال الشائعة ما يلي:
- SSH: لمثيلات Linux، ويتطلب مفتاحًا خاصًا.
- WinRM: لمثيلات Windows، ويتطلب بيانات اعتماد.
عادةً ما تضبطون تفاصيل الاتصال داخل كتلة provisioner، أو تُورث من المورد.
`remote-exec` على EC2
إليكم كيفية استخدام remote-exec لتثبيت Apache على مثيل AWS EC2 جديد.
ملاحظة: يتطلب ذلك توفير مثيل EC2 وإمكانية الوصول إليه عبر SSH. وللتبسيط، نفترض وجود زوج مفاتيح ومجموعة أمان جاهزين.
resource "aws_instance" "web_server" {
ami = "ami-0abcdef1234567890" # Replace with valid AMI ID
instance_type = "t2.micro"
key_name = "my-ssh-key" # Replace with your SSH key name
vpc_security_group_ids = ["sg-0123456789abcdef0"] # Replace with your SG ID
provisioner "remote-exec" {
inline = [
"sudo yum update -y",
"sudo yum install -y httpd",
"sudo systemctl start httpd",
"sudo systemctl enable httpd"
]
connection {
type = "ssh"
user = "ec2-user"
private_key = file("~/.ssh/my-ssh-key.pem")
host = self.public_ip
}
}
}متى تستخدمون `remote-exec`
يُعد remote-exec مثاليًا لما يلي:
- تهيئة الخوادم: تثبيت خوادم الويب أو قواعد البيانات أو Docker.
- نشر التطبيقات: نسخ تعليمة التطبيق البرمجية وإعدادها.
- إدارة الإعدادات: تشغيل أدلة Ansible أو وصفات Chef مباشرة.
- التحقق بعد الإنشاء: التأكد من تشغيل الخدمات على المثيل الجديد.
وهو الخيار الأساسي لإعداد الحالة الأولية للخادم.
المزوّدات عند التدمير
يمكن للمزوّدات أيضًا أن تعمل عند تدمير مورد. وهذا مفيد لمهام التنظيف.
يمكنكم تحديد when = destroy داخل كتلة المزوّد. على سبيل المثال، لإلغاء تسجيل مثيل من موازن تحميل قبل إنهائه.
يمكن أيضًا ضبط سلوك on_failure لتحديد ما يحدث إذا فشل أمر المزوّد. ويؤدي ذلك افتراضيًا إلى حدوث خطأ.
اختبار المزوّدات
أيّ مزوّد ستستخدمونه لتثبيت خادم ويب، مثل Nginx، على مثيل آلة افتراضية أُنشئ حديثًا؟
المزوّدات: محلية مقابل بعيدة
لقد استكشفنا مزوّدات Terraform، وهي أدوات قوية لتنفيذ الأوامر أثناء دورة حياة المورد.
local-execينفّذ الأوامر على الجهاز الذي يُشغَّل عليه Terraform، وهو مفيد للبرمجة النصية المحلية أو الإشعارات.remote-execينفّذ الأوامر مباشرةً على المورد الذي جرى توفيره، وهو مناسب تمامًا لتهيئة الخوادم بالبرامج أو الإعدادات الأولية.
تساعد المزوّدات على سد الفجوة بين نشر البنية التحتية والإعداد الأولي للتطبيق. بعد ذلك، سننتقل إلى تقنيات متقدمة لإدارة الحالة!
الأسئلة الشائعة
هل درس «موفرا التهيئة `local-exec` و`remote-exec`» مجاني؟
نعم — نص درس «موفرا التهيئة `local-exec` و`remote-exec`» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة DevOps Bootcamp، انتقل إلى CoddyKit PRO. تتضمن دورة DevOps Bootcamp 4 دروس في المجموع.
ماذا ستتعلم في «موفرا التهيئة `local-exec` و`remote-exec`»؟
نفّذ موفري التهيئة `local-exec` و`remote-exec` لتشغيل الأوامر على الجهاز الذي يشغّل Terraform أو على الموارد التي أُنشئت، على التوالي. تتمرن على DevOps Bootcamp مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ DevOps Bootcamp؟
لا تُشترط خبرة سابقة. DevOps Bootcamp على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.
كم من الوقت يستغرق درس «موفرا التهيئة `local-exec` و`remote-exec`»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس DevOps Bootcamp هذا؟
نعم. كل درس في DevOps Bootcamp يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- الاستعلام عن البيانات باستخدام مصادر البيانات
- موفرا التهيئة `local-exec` و`remote-exec`
- الموارد الفارغة والمحفزات
- استخدام البيانات الخارجية والقوالب