البرنامج النصي لبدء التشغيل على EC2
-
23-08-2019 - |
سؤال
لقد قمت بإنشاء Amazon Ami مخصص (Fedora) يدير بعض البرامج النصية ثم تغلق.
المشكلة مع AMI هي أنه إذا تغير التعليمات البرمجية، يجب أن تكون هناك طريقة لمثيل AMI للحصول على أحدث البرامج النصية قبل تنفيذها.
كتبت سيناريو شل ووضعها في /etc/init.d/nt_startup
للحفاظ على رمز حتى الآن، أعمل git pull
shell script في مستودع التعليمات البرمجية الخاصة بي ثم تنفيذ البرنامج النصي.
المشكلة هي، git pull
لا يبدو أنه يعمل عندما يحدق مثيل، لكن البرنامج النصي Python يعمل بشكل جيد. لست متأكدا ما أفتقده ... إليك البرنامج النصي لبدء التشغيل:
#!/bin/bash
#
# ec2 Startup script for EC2 machines
#
# chkconfig: 345 99 02
# description: Script used to issue startup and shutdown commands.
#
if [ "$1" = "start" ]; then
/usr/scripts/code/git_latest
python /usr/scripts/code/process.py
exit
fi
if [ "$1" = "stop" ]; then
#nothing
exit
fi
ال /usr/scripts/code/git_latest
SHELT SCRITT يبدو وكأنه هذا:
#pulls in the latest code from the repository
cd /usr/scripts/code
sudo git pull
يجب أن تسحب آخر process.py
النصي.
الشيء الغريب هو أنه إذا كنت في مثلي وتنفيذ البرنامج النصي لبدء التشغيل يدويا (/etc/init.d/nt_startup "start"
)، يعمل البرنامج النصي git على ما يرام.
هل فاتني شيء؟
المحلول
حسنا، احسبت أخيرا. بعد تجوب إخراج EC2، وجدت هذا الخط:
"بدء ntstartup: sudo: عذرا، يجب أن يكون لديك tty لتشغيل sudo"
يبدو أن فيدورا يغلق أوامر غير TTY Sudo.
بحث سريع أدى إلى الحل:
- كجذر تشغيل "Visudo".
- ابحث عن الخط باستخدام "المتصلين الافتراضي" والتعليق عليه (#Default StoreTty)
آمل أن يكون هذا مفيدا لأي شخص آخر يعمل في هذه المشكلة.
نصائح أخرى
عليك أن تضع رابط بدء التشغيل في /etc/rc؟.d. يمكنك استخدام Chkconfig (8) أو ntsysv (8) لمساعدتك في إدارة هذه الدلائل.