दिलचस्प पोस्ट
सीएसएस एट्रिब्यूट और छद्म-एलिमेंट चयनकर्ताओं को मिलाएं? यह कब जांचना ठीक है कि कोई फ़ाइल मौजूद है या नहीं? चयन बटन के बिना GridView में चयन करने वाली पूर्ण पंक्ति को कैसे कार्यान्वित करें? जावा पार्सिंग XML दस्तावेज़ "प्रोटोल में सामग्री की अनुमति नहीं है।" त्रुटि आईफोन पर जेएसओएन और कोर डाटा एक एकल अक्षर स्ट्रिंग के रूप में टेक्स्ट फ़ाइल आयात करें विंडोज के लिए उद्देश्य सी सी ++ में यूनिकोड प्रोसेसिंग PHP / MYSQL में एक के रूप में दो mysql क्वेरी कैसे निष्पादित करें? Git submodules के अंदर फ़ाइलों को ट्रैक करने में असमर्थ लॉग (10.0) संकलित कर सकते हैं लेकिन लॉग (0.0) नहीं कर सकते? सेट कीवर्ड का उपयोग करने और उपयोग नहीं करने के बीच प्रकार में अंतर क्या ES6 में चलो या कॉन्स्ट नहीं फहराए गए के साथ घोषित चर? मैं आईफोन के वर्तमान आईपी पते की जांच कैसे करूं? SQLite ने 14 का एक त्रुटि कोड लौटाया

क्लाउड-इनट स्टार्टअप स्क्रिप्ट मैं हर बार अपने EC2 इंस्टेंस बूट को कैसे चलाऊँ?

मेरे पास अमेज़ॅन लिनक्स एएमआई के आधार पर एक एएमआई चलाने वाला ईसी 2 उदाहरण है ऐसे सभी AMIs की तरह, यह क्लाउड-इनट सिस्टम को हर उदाहरण में पारित उपयोगकर्ता डेटा के आधार पर स्टार्टअप स्क्रिप्ट चलाने के लिए समर्थन करता है। इस विशेष मामले में, मेरा उपयोगकर्ता डेटा इनपुट एक ऐसा फ़ाइल होता है, जिसमें कई अन्य स्टार्टअप स्क्रिप्ट स्रोत होते हैं:

#include http://s3.amazonaws.com/path/to/script/1 http://s3.amazonaws.com/path/to/script/2 

पहली बार जब मैं अपने उदाहरण को बूट करता हूँ, क्लाउड-इनट स्टार्टअप स्क्रिप्ट सही ढंग से चलता है हालांकि, अगर मैं उदाहरण के एक नरम रीबूट (उदाहरण के लिए, sudo shutdown -r now चलाकर), उदाहरण दो बार चारों ओर स्टार्टअप स्क्रिप्ट को चलाने के बिना वापस आ जाता है। अगर मैं सिस्टम लॉग में जाता हूं, तो मैं देख सकता हूं:

 Running cloud-init user-scripts user-scripts already ran once-per-instance [ OK ] 

यह वही नहीं है जो मैं चाहता हूँ- मैं स्टार्टअप स्क्रिप्ट्स की उपयोगिता देख सकता हूं जो केवल एक बार उदाहरण के लिए जीवनकाल चलाते हैं, लेकिन मेरे मामले में इन्हें हर बार प्रारंभ करना चाहिए, जैसे कि सामान्य स्टार्टअप स्क्रिप्ट

मुझे पता है कि एक संभव समाधान है कि मैन्युअल रूप से मेरी स्क्रिप्ट को पहली बार चलाने के बाद खुद को rc.local में डाल दिया जाए। यह भारी लगता है, हालांकि क्लाउड-इन्टिट और आरसीडी के वातावरण काफी अलग हैं और अब मुझे पहली बार लॉन्च करने के लिए स्क्रिप्ट को डीबग करना होगा और बाद में सभी लॉन्च अलग-अलग होंगे।

क्या किसी को पता है कि मैं हमेशा अपनी लिपियों को चलाने के लिए क्लाउड-इनट कह सकता हूँ? यह निश्चित रूप से क्लाउड-इनट के डिजाइनरों पर विचार किया जाएगा।

Solutions Collecting From Web of "क्लाउड-इनट स्टार्टअप स्क्रिप्ट मैं हर बार अपने EC2 इंस्टेंस बूट को कैसे चलाऊँ?"

11.10, 12.04 और बाद में, आप 'स्क्रिप्ट-यूज़र' रन 'हमेशा' बनाकर इसे प्राप्त कर सकते हैं। /etc/cloud/cloud.cfg में आप ऐसा कुछ देखेंगे:

 cloud_final_modules: - rightscale_userdata - scripts-per-once - scripts-per-boot - scripts-per-instance - scripts-user - keys-to-console - phone-home - final-message 

यह बूट के बाद संशोधित किया जा सकता है, या क्लाउड-कॉन्फ़िग डेटा को इस पट्टी पर ओवरराइड करने के लिए उपयोगकर्ता डेटा के माध्यम से डाला जा सकता है। यानी, उपयोगकर्ता डेटा में आप प्रदान कर सकते हैं:

 #cloud-config cloud_final_modules: - rightscale_userdata - scripts-per-once - scripts-per-boot - scripts-per-instance - [scripts-user, always] - keys-to-console - phone-home - final-message 

यह '#included' भी हो सकता है जैसा कि आपने अपने विवरण में किया है। दुर्भाग्य से, अभी, आप 'cloud_final_modules' को संशोधित नहीं कर सकते हैं, लेकिन केवल इसे ओवरराइड करें मुझे उम्मीद है कि कुछ बिंदु पर config अनुभाग को संशोधित करने की क्षमता जोड़नी होगी

http://bazaar.launchpad.net/~cloud-init-dev/cloud-init/trunk/view/head:/doc/examples/cloud-config पर क्लाउड-कॉन्फ़िग डॉक में इस पर थोड़ी अधिक जानकारी है ।टेक्स्ट

वैकल्पिक रूप से, आप / var / lib / cloud / scripts / per-boot में फाइल डाल सकते हैं, और वे 'स्क्रिप्ट-प्रति-बूट' पथ द्वारा चलाए जायेंगे।

/etc/init.d/cloud-init-user-scripts , इस पंक्ति को संपादित करें:

 /usr/bin/cloud-init-run-module once-per-instance user-scripts execute run-parts ${SCRIPT_DIR} >/dev/null && success || failure 

सेवा मेरे

  /usr/bin/cloud-init-run-module always user-scripts execute run-parts ${SCRIPT_DIR} >/dev/null && success || failure 

सौभाग्य !

एक संभावना है, हालांकि कुछ हद तक हैकिंग, लॉक फाइल को हटाना है जो क्लाउड-इनइट यह निर्धारित करने के लिए उपयोग करता है कि उपयोगकर्ता-स्क्रिप्ट पहले ही चलाया जा रहा है या नहीं। मेरे मामले में (अमेज़ॅन लिनक्स एएमआई), यह लॉक फाइल /var/lib/cloud/sem/ और user-scripts.i-7f3f1d11 नामित है user-scripts.i-7f3f1d11 (अंत में हैश भाग हर बूट में बदलता है) इसलिए, शामिल करें फ़ाइल के अंत में जोड़ा गया निम्न उपयोगकर्ता-डेटा स्क्रिप्ट ट्रिक करेगा:

 #!/bin/sh rm /var/lib/cloud/sem/user-scripts.* 

मुझे यकीन नहीं है कि इस पर किसी और पर कोई प्रतिकूल असर होगा, लेकिन मेरे प्रयोगों में यह काम किया है।

cloud-init अब इसे मूल रूप से समर्थन करता है, दस्तावेज में runcmd बनाम बूट सीएमडी कमांड विवरण देखें ( http://cloudinit.readthedocs.io/en/latest/topics/examples.html#run-commands-on-first-boot ):

"Runcmd":

 #cloud-config # run commands # default: none # runcmd contains a list of either lists or a string # each item will be executed in order at rc.local like level with # output to the console # - runcmd only runs during the first boot # - if the item is a list, the items will be properly executed as if # passed to execve(3) (with the first arg as the command). # - if the item is a string, it will be simply written to the file and # will be interpreted by 'sh' # # Note, that the list has to be proper yaml, so you have to quote # any characters yaml would eat (':' can be problematic) runcmd: - [ ls, -l, / ] - [ sh, -xc, "echo $(date) ': hello world!'" ] - [ sh, -c, echo "=========hello world'=========" ] - ls -l /root - [ wget, "http://slashdot.org", -O, /tmp/index.html ] 

"Bootcmd":

 #cloud-config # boot commands # default: none # this is very similar to runcmd, but commands run very early # in the boot process, only slightly after a 'boothook' would run. # bootcmd should really only be used for things that could not be # done later in the boot process. bootcmd is very much like # boothook, but possibly with more friendly. # - bootcmd will run on every boot # - the INSTANCE_ID variable will be set to the current instance id. # - you can use 'cloud-init-per' command to help only run once bootcmd: - echo 192.168.1.130 us.archive.ubuntu.com >> /etc/hosts - [ cloud-init-per, once, mymkfs, mkfs, /dev/vdb ] 

यह भी "cloud-init-per" कमांड उदाहरण को bootcmd में नोट करें। इसकी मदद से:

 Usage: cloud-init-per frequency name cmd [ arg1 [ arg2 [ ... ] ] run cmd with arguments provided. This utility can make it easier to use boothooks or bootcmd on a per "once" or "always" basis. If frequency is: * once: run only once (do not re-run for new instance-id) * instance: run only the first boot for a given instance-id * always: run every boot