स्टार्टअप पर फिर से EC2 उपयोगकर्ता डेटा स्क्रिप्ट कैसे चलाएं?


19

क्लाउड-इनिट एक EC2 उदाहरण के पहले बूट पर एक उपयोगकर्ता डेटा स्क्रिप्ट चलाने के बाद , एक राज्य फ़ाइल संभवतः लिखी गई है ताकि बाद में रिबूट पर क्लाउड-इनिट स्क्रिप्ट को फिर से न चलाए। ऐसे मामले हैं जहां मैं इस राज्य फ़ाइल को हटाना चाहता हूं ताकि उपयोगकर्ता डेटा स्क्रिप्ट फिर से चले। कहाँ है?

जवाबों:


24

rm /var/lib/cloud/instances/*/sem/config_scripts_user

इस पर काम करने की पुष्टि:

  • सेंटोस 7.4
  • उबंटू 14.04
  • उबंटू 16.04

पूर्णता की खातिर, यदि आपके पास एक ऐसी स्थिति है जहां आप इस तथ्य / संभावना पर नज़र रखने की परवाह करते हैं कि इस एएमआई [एक अभिभावक एएमआई था ...] और वे सभी cloud-initउपयोगकर्ता डेटा को भाग गए , तो आप केवल वर्तमान सेमाफ़ोर को हटा सकते हैं।

rm /var/lib/cloud/instance/sem/config_scripts_user


2
आपने जल्दी से पता लगा लिया।
c24w

9
@ c24w वे टाइमस्टैम्प भ्रामक हैं। यह वास्तव में मुझे कुछ घंटों के शोध और परीक्षण में लगा, इसलिए एक बार जब मुझे यह पता चला, तो मैंने एक निश्चित उत्तर की तलाश में अगले व्यक्ति की मदद करने के लिए यह प्रश्न बनाया।
माइक

1
मैं इस के बाद से आया हूँ और महसूस नहीं किया है कि यह विकि-प्रकार Q & As को पोस्ट करने के लिए प्रोत्साहित किया गया था। आप इस दस्तावेज की सराहना करते हैं!
c24w

1
मुझे खुशी है कि इसे सर्वरफॉल्ट पर प्रोत्साहित किया गया। मैंने इसे SO
फ्रैंक

1
@ flag5 curlवर्तमान उदाहरण आईडी प्राप्त करने के लिए मेटाडेटा सेवा के लिए अनावश्यक है, क्योंकि /var/lib/cloud/instanceपहले से ही मौजूदा उदाहरण के लिए एक सिमलिंक है /var/lib/cloud/instances। :-)
माइक

2

आप अपनी स्क्रिप्ट /etc/rc.local में डाल सकते हैं, जो स्क्रिप्ट को हर रिबूट पर चलाएगा।


/etc/rc.localEC2 उपयोगकर्ता डेटा के साथ कुछ नहीं करना है।
माइक

@MikeConigliaro मैं प्रत्येक बूट पर कुछ चलाने के लिए उपयोगकर्ता-डेटा का उपयोग करना चाहता था, इसलिए मैंने उपयोगकर्ता-डेटा स्क्रिप्ट को /etc/rc.local पर जोड़ दिया।
user253751

0

आप राज्य फ़ाइल को हटाने के बजाय प्रत्येक बूट पर अपने उपयोगकर्ता डेटा को फिर से चलाने के लिए कॉन्फ़िगर कर सकते हैं। उपयोगकर्ताडेटा cloud_final_modulesस्क्रिप्ट को फिर से चलाने के लिए आपको अपनी यूजरडेटा स्क्रिप्ट का उपयोग करना होगा और इसके लिए आपको उपयोगकर्ता डेटा में miultiple फाइलें रखने के लिए uderdata को अनुकूलित करना होगा। उदाहरण उपयोगकर्ताडेटा फ़ाइल इस प्रकार होगी:

Content-Type: multipart/mixed; boundary="//"
MIME-Version: 1.0

--//
Content-Type: text/cloud-config; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename="cloud-config.txt"

#cloud-config
cloud_final_modules:
- [scripts-user, always]

--//
Content-Type: text/x-shellscript; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename="userdata.txt"

#!/bin/bash
/bin/echo "Hello World" >> /tmp/userdata-test.txt
--//

यह प्रत्येक बूट प्रक्रिया के अंतिम चरण पर निष्पादित करने के लिए उपयोगकर्ताडेटा स्क्रिप्ट बनाएगा। यहां केवल एक ही लाइन bin/echo "Hello World" >> /tmp/userdata-test.txtको निष्पादित किया जाना है, इसे अपने शेल स्क्रिप्ट से बदल दें जिसे हर बार मशीन बूट होने पर निष्पादित करने की आवश्यकता होती है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.