EC2 उदाहरण के बूट के बाद एक बैश स्क्रिप्ट चलाएँ


19

मेरे पास ईसी 2 उदाहरण पर एक स्क्रिप्ट है जो दूरस्थ रूप से एक और उदाहरण शुरू करता है।

एक बार जब यह उदाहरण पूरी तरह से लोड हो जाता है (बूटिंग समाप्त हो जाता है) मैं चाहता हूं कि यह स्वचालित रूप से एक बैश स्क्रिप्ट चलाए, ऐसा करने का सबसे अच्छा तरीका क्या होगा?

मुझे पूरी तरह से शुरू करने की आवश्यकता है, मूल रूप से बैश स्क्रिप्ट एक छवि रूपांतरण स्क्रिप्ट चलाती है (ImageMagick का उपयोग करके और "wget" कमांड को कुछ बार निष्पादित करता है)

वर्तमान में, स्क्रिप्ट यहां स्थित है:

/home/root/beginProcess.sh

और मैं इसे मैन्युअल रूप से निष्पादित करके शुरू कर सकता हूं

बैश startProcess.sh

RHEL-6.2-स्टार्टर-EBS-i386

इसके अलावा इसमें ईबीएस वॉल्यूम जुड़ा हुआ है, अगर यह मदद करता है, धन्यवाद!

जवाबों:


26

मैं केवल उपयोगकर्ता-डेटा विकल्प का उपयोग करने का सुझाव दूंगा ec2-run-instances। यह आपको VM को किसी प्रकार की एक स्क्रिप्ट देता है जो पहले बूट पर चलाया जाएगा। यदि आप उबंटू या डेबियन का उपयोग कर रहे हैं, तो आप क्लाउड-इनिट का उपयोग कर सकते हैं , जो प्रक्रिया पर कुछ अच्छा पॉलिश डालता है। यदि क्लाउड-इनिट का उपयोग कर रहे हैं, तो आप [runcmd]बूट के बाद चलने के लिए मनमाना आदेशों को निर्दिष्ट करने के लिए कॉन्फ़िगर फ़ाइल के अनुभाग का उपयोग कर सकते हैं ।

उपयोगकर्ता-डेटा पृष्ठ के लिए एसएफ उपयोगकर्ता एरिक हैमंड के लिए धन्यवाद । उसकी साइट देखें - यह AWS पर जानकारी का खजाना है।

संपादित करें: फिर से पढ़ने के बाद, यह स्पष्ट नहीं है कि आप शुरुआती बूट पर या हर बूट पर एक कमांड चलाना चाहते थे। उपरोक्त निर्देश केवल प्रारंभिक बूट पर लागू होते हैं। यदि आप प्रत्येक बूट पर एक कमांड चलाना चाहते हैं, तो आपके पास कुछ विकल्प हैं - आप @rebootक्रोन निर्देश के माध्यम से एक कमांड चला सकते हैं , या वैकल्पिक रूप से आप स्क्रिप्ट को जोड़ सकते हैं /etc/rc.local, जो कि हर बार सिस्टम बूट में चलाया जाएगा।


1
प्रतिक्रिया के लिए बहुत बढ़िया धन्यवाद, स्पष्ट करने के लिए कि मैं चाहता था कि हर बार सिस्टम बूट चलाए, /etc/rc.localआश्चर्यजनक रूप से काम कर रहा है, चीयर्स
SSH इस

9

यदि आप एक एएमआई का उपयोग कर रहे थे जिसमें cloud-initपैकेज स्थापित था (जैसे कि अमेज़ॅन लिनक्स या उबंटू) तो आप बस बैश स्क्रिप्ट (जो कि #! से शुरू होती है) को उपयोगकर्ता-डेटा-फ़ाइल के रूप में पास कर सकते हैं और यह स्वचालित रूप से अंत में चलेगा। बूट प्रक्रिया।

उदाहरण के लिए, यह उतना ही सरल हो सकता है:

ec2-run-instances                             \
  --user-data-file /home/root/beginProcess.sh \
  --key $USER                                 \
  ami-XXXXXXXX

यहां वह लेख है जहां मैंने उपयोगकर्ता-डेटा स्क्रिप्ट अवधारणा पेश की है, जो अब अमेज़न लिनक्स और उबंटू जैसे प्रमुख ईसी 2 एएमआई में उपलब्ध है: http://alestic.com/2009/06/ec2-user-data-scripts

दुर्भाग्य से, ऐसा लगता है कि आप RHEL AMI का उपयोग करना चाहते हैं। मैंने उसकी एक प्रति चलाई और पहले बूट पर क्लाउड-इनिट या उपयोगकर्ता-डेटा स्क्रिप्ट चलाने के लिए कोई संदर्भ नहीं मिल सका, न ही एक ही काम का परीक्षण किया।

मैं यह नहीं कह रहा हूं कि आपको इसके लिए लिनक्स डिस्ट्रोस को स्विच करना चाहिए, लेकिन अमेज़ॅन लिनक्स आरएचईएल पर आधारित है, इसलिए यह आपके लिए काम कर सकता है।

यहां मैंने एक लेख लिखा है जो आपके उपयोगकर्ता-डेटा स्क्रिप्ट को डीबग करने में मदद कर सकता है यदि यह पहली बार काम नहीं करता है: http://alestic.com/2010/12/ec2-user-data-output


ऑफटॉपिक, लेकिन इस तरह का अमूल्य बनाने के लिए भी धन्यवाद। शाबास।
danieljimenez
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.