दस्तावेज़
Initihooks - सिस्टम प्रारंभिककरण, विन्यास और पूर्ववर्ती
हम इस दस्तावेज को आज तक रखने का लक्ष्य रखते हैं, लेकिन हम इस दस्तावेज को आज तक रखते हैं। Inithooks प्रलेखन स्रोत (GitHub) पर हमेशा तारीख तक होना चाहिए।
परिचय
इससे पहले कि हम एक TurnKey प्रणाली को एक छात्रावास इंटरनेट पर उजागर करें, हमें पहले इसे शुरू करने की आवश्यकता है। यह पासवर्ड सेटअप करेगा, सुरक्षा अद्यतन स्थापित करेगा और कुंजी अनुप्रयोगों सेटिंग्स को कॉन्फ़िगर करेगा।
यह प्रारंभिक प्रक्रिया इंटरैक्टिव या गैर-इंटरएक्टिव हो सकती है, जो सबसे अच्छा काम करता है, जहां और सिस्टम कैसे तैनात किया जाता है।
इंटरैक्टिव सिस्टम प्रारंभिककरण
एक विन्यास विज़ार्ड सरल पाठ संवादों का एक छोटा अनुक्रम दिखाता है जो प्राइमिटिव दिखता है लेकिन एक त्वरित चरण-दर-चरण प्रक्रिया प्रदान करता है जो कहीं भी काम करता है और केवल नंगे की आवश्यकता होती है न्यूनतम सॉफ्टवेयर निर्भरता - सुरक्षा संवेदनशील अनुप्रयोगों के लिए एक बड़ा लाभ:
सभी सॉफ्टवेयर संभावित रूप से छोटी गाड़ी है लेकिन हम जानबूझकर फैंसी आई कैंडी पर सादगी का पक्ष लेने के जोखिम को कम कर सकते हैं।
कॉन्फ़िगरेशन संवाद दो स्थानों में से एक में चलाते हैं:
-
पहले बूट पर बूट कंसोल निर्माण प्रकार (जैसे ISO) पर जहां वास्तविक या आभासी मशीन आमतौर पर एक इंटरैक्टिव सिस्टम कंसोल तक पहुंच प्रदान करती है।
-
पहला प्रशासन लॉगिन निर्माण प्रकार पर चल रहा है सरस्वती आभासी मशीन (जैसे AWS, Proxmox और LXC) जो बूट समय पर सिस्टम के साथ बातचीत करने का विकल्प नहीं प्रदान करते हैं।
बूट के बाद, एक आभासी बाड़ एक वेब पेज पर संभावित रूप से कमजोर सेवाओं तक पहुंचने का प्रयास करता है, यह बताता है कि पहली बार SSH को मशीन में कैसे शुरू किया जाए, यह पहली बार है। सिस्टम। प्रारंभिककरण के बाद आभासी बाड़ नीचे आती है और सभी सेवाओं को सामान्य रूप से एक्सेस किया जा सकता है।
गैर-इंटरएक्टिव सिस्टम प्रारंभिककरण
The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The TurnKey Hub पूर्ववर्ती प्रणाली प्रारंभिककरण सेटिंग्स द्वारा मूल्यों के साथ तैनाती को सुव्यवस्थित करना उपयोगकर्ता हब के क्लाउड तैनाती वेब ऐप के माध्यम से एक उदाहरण लॉन्च करने से पहले प्रदान करता है।
इसका मतलब यह है कि जब सिस्टम पहली बार बूट करता है तो उसे टेक्स्ट संवाद के माध्यम से उपयोगकर्ता के साथ बातचीत करने की आवश्यकता नहीं होती है।
प्रीसीडिंग को अच्छी तरह से दस्तावेज किया गया है और अन्य होस्टिंग प्रदाताओं या निजी बादलों द्वारा समान रूप से तैनाती को सुव्यवस्थित करने के लिए इस्तेमाल किया जा सकता है।
हुड के तहत: वह सब कुछ जो आपको जानना चाहता था लेकिन पूछने से डर गया था
स्टॉप! पूर्ववर्ती परिचय ने बताया कि केवल कुछ ही मौतों को सिस्टम प्रारंभिककरण प्रक्रिया के बारे में जानने की आवश्यकता है।
बाकी प्रलेखन के लिए इरादा है:
-
सर्वर हैकर्स को यह जानने में दिलचस्पी है कि TurnKey हुड के नीचे काम करता है और अपने विन्यास हुक को विकसित करता है।
-
विशेषज्ञ उपयोगकर्ता जो यह समझना चाहते हैं कि सिस्टम प्रारंभिककरण कैसे गहराई में काम करता है।
-
होस्टिंग प्रदाता और निजी क्लाउड फुलस्टैक निंजा TurnKey और कस्टम कंट्रोल पैनल के बीच तंग एकीकरण को लागू करने में रुचि रखते हैं।
यह एक आवश्यकता नहीं है, सिर्फ एक बोनस है। किसी विशेष एकीकरण के बिना, TurnKey छवियों को किसी अन्य Debian या Debian आधारित छवि की तरह तैनात किया जा सकता है, जो आपकी मौजूदा तैनाती स्क्रिप्ट का उपयोग करता है। यदि आप Debian या उबंटू को तैनात कर सकते हैं तो TurnKey को तैनात करने के लिए इसे त्रियल होना चाहिए।
Inithooks पैकेज डिजाइन लक्ष्य
inithooks पैकेज सिस्टम प्रारंभिककरण स्क्रिप्ट को निष्पादित करता है जो:
- Regenerate गुप्त कुंजी (जैसे SSH, डिफ़ॉल्ट SSL प्रमाणपत्र): यह सिर्फ एक अच्छा विचार नहीं है, यह मध्यम हमलों में आदमी से बचने के लिए आवश्यक है।
- पासवर्ड सेट करें (उदाहरण के लिए, रूट, डेटाबेस, आवेदन): जोखिम से बचने के लिए आवश्यक हार्डवायर्ड डिफ़ॉल्ट पासवर्ड
- बुनियादी अनुप्रयोग सेटिंग्स को कॉन्फ़िगर करें (जैसे, डोमेन, व्यवस्थापक ईमेल): विशेष रूप से उपयोगी जब आवेदन को कॉन्फ़िगर करने के लिए एक विन्यास फ़ाइल के प्रारूप को हंट करने की आवश्यकता होगी।
इसके अलावा, Inithooks एक पूर्ववर्ती तंत्र प्रदान करता है जिसे विभिन्न वर्चुअलाइजेशन समाधान और क्लाउड द्वारा प्रदान किए गए कस्टम कंट्रोल पैनल के साथ TurnKey को एकीकृत करना आसान बनाता है। होस्टिंग प्रदाता।
यह कैसे काम करता है
Inithooks स्वयं जितना संभव हो उतना सामान्य और नंगे हड्डियों के रूप में है, जो खुद ऐप-विशिष्ट "हुक" स्क्रिप्ट तक कार्यक्षमता के थोक को छोड़ देता है,
ये स्क्रिप्ट /usr/lib/inithooks के तहत दो उप-निर्देशों में स्थित हैं - everyboot.d और firstboot.d।
वे अल्फ़ान्यूमेरिक आदेश में निष्पादित कर रहे हैं। इसका मतलब है कि 1-फोओ नामक एक स्क्रिप्ट को 2-बार से पहले निष्पादित किया जाएगा, जिसे स्वयं 3-फोबबार से पहले निष्पादित किया जाएगा। यही कारण है कि इन निर्देशिकाओं में स्क्रिप्ट शुरू में अजीब संख्या है।
inithooks शीर्ष स्तर की इनिट स्क्रिप्ट को सिस्टम प्रारंभिककरण में शुरू किया जाता है, जो रनवेल 2-15 पर होता है। यह सिस्टम की कॉन्फ़िगरेशन को शुरू होने से पहले सक्षम बनाता है। यह विचार किया जाना चाहिए जब हुक स्क्रिप्ट विकसित किया गया हो।
firstboot.d स्क्रिप्ट
पहले में स्क्रिप्ट.d उप-निर्देशिका निम्नलिखित स्थितियों के तहत निष्पादित की जाती है:
-
यदि उपयोगकर्ता रूट शेल से "turnkey-init" को निष्पादित करता है। इस आदेश का उपयोग सर्वर को आवश्यकतानुसार दोबारा कॉन्फ़िगर करने के लिए पहलीबूट.d inithooks को फिर से चलाने के लिए किया जा सकता है। कुछ स्क्रिप्ट जैसे कि गुप्त कुंजी को पुनर्जीवित करने वाले लोग छोड़ दिए गए हैं। विवरण के लिए /usr/sbin/turnkey-init में BLACKLIST चर देखें।
-
जब उपयोगकर्ता पहली बार एक हेडलेस सिस्टम में रूट के रूप में लॉग इन करता है। यह चलाने के लिए "turnkey-init" को ट्रिगर करता है ताकि उपयोगकर्ता इंटरैक्टिव रूप से सर्वर प्रारंभिककरण को पूरा कर सके।
-
जब पहली बार TurnKey सर्वर बूट्स के लिए
inithooks जाँच करता है कि क्या यह /etc/default/inithooks. में RUN_FIRSTBOOT ध्वज के मूल्य की जांच करके पहला बूट है या नहीं यदि मान झूठ है तो यह स्क्रिप्ट चलाता है और ध्वज को सच करने के लिए टॉगल करता है।
पहलाबूट स्क्रिप्ट दो विधियों में से एक में चल सकता है, इंटरेक्टिव या गैर-इंटरएक्टिव, निर्माण के प्रकार के आधार पर।
गैर-हेडलेस बिल्ड्स पर इंटरएक्टिव मोड - लाइव सीडी ISOइन छवि प्रकारों के साथ बूट के दौरान आभासी कंसोल तक इंटरैक्टिव पहुंच की उम्मीद है तो कुछ inithooks प्रारंभिककरण स्क्रिप्ट उपयोगकर्ता के साथ पाठ के माध्यम से बातचीत करेंगे। पहली बार सिस्टम बूट्स संवाद (जैसे पासवर्ड, एप्लिकेशन सेटिंग आदि के लिए पूछते हैं)। ये वही स्क्रिप्ट हैं जो निष्पादित हो जाती हैं यदि आप "turnkey-init" चलाते हैं।
हेडलेस बिल्ड्स पर गैर-इंटरएक्टिव मोड - AWS, Proxmox और LXC: इन छवि प्रकारों के साथ बूट के दौरान आभासी सांत्वना तक इंटरैक्टिव पहुंच नहीं मानी जा सकती है। पहले बूट को गैर-इंटरएक्टिव तरीके से चलाने में सक्षम होना चाहिए, अन्यथा हम बूट को फांसी का जोखिम उठाते हैं जबकि यह उपयोगकर्ता के संपर्क के लिए इंतजार करता है जो कभी नहीं होता है।
इसलिए उपयोगकर्ता के साथ बातचीत करने के बजाय सिस्टम पूर्व-प्रवेशित एप्लिकेशन सेटिंग्स को डमी डिफॉल्ट के साथ निर्धारित करता है और सभी पासवर्ड को यादृच्छिक मान पर सेट करता है। यदि रूट पासवर्ड पहले से ही सेट किया गया है (उदाहरण के लिए, एक पूर्व-निर्धारण स्क्रिप्ट में) हेडलेस प्रीसीडिंग स्क्रिप्ट इसे ओवरराइट नहीं करेगा, इसलिए आपका रूट पासवर्ड ठीक हो जाना चाहिए।
पहले के गैर-इंटरएक्टिव चल रहा है से आउटपुट स्क्रिप्ट /var/log/inithooks.log. में लॉग इन किया गया है
पहली बार जब तक उपयोगकर्ता लॉग इन को रूट के रूप में लॉग इन करता है तब तक इंटरएक्टिव सर्वर कॉन्फ़िगरेशन में देरी होती है। यह /usr/lib/inithooks/firstboot.d/29preseed हुक की मदद से पूरा हो गया है, जो केवल हेडलेस बिल्ड्स पर मौजूद है:
#!/bin/bash -e # generic preseeding of inithooks.conf if it doesn't exist [ -e $INITHOOKS_CONF ] && exit 0 MASTERPASS=$(mcookie | cut --bytes 1-8) cat>$INITHOOKS_CONF<<EOF export ROOT_PASS=$MASTERPASS export DB_PASS=$MASTERPASS export APP_PASS=$MASTERPASS export APP_EMAIL=admin@example.com export APP_DOMAIN=DEFAULT export HUB_APIKEY=SKIP export SEC_ALERTS=SKIP export SEC_UPDATES=FORCE EOF chmod +x /usr/lib/inithooks/firstboot.d/30turnkey-init-fence
प्रारंभिक बाड़उपरोक्त हेडलेस प्रीसीडिंग हुक "इन्टीलाइजेशन बाड़" तंत्र को भी सक्रिय करता है जो स्थानीय वेब सर्वर को स्थिर वेब पर पहुंचने के प्रयासों को पुनर्निर्देशित करने के लिए आईपीटेबल का उपयोग करता है। inithooks/bin/simplehttpd.py द्वारा सेवा पृष्ठ।
यह पृष्ठ बताता है कि आपको सिस्टम को शुरू करने के लिए पहले रूट के रूप में लॉग इन करना होगा। बाड़ का उद्देश्य उपयोगकर्ताओं को अनइंटिलिटाइज्ड वेब एप्लिकेशन तक पहुंचने से रोकने के लिए किया जाता है, जो कुछ मामलों में सुरक्षा जोखिम का अनुमान लगा सकता है।
उपयोगकर्ता को जड़ के रूप में लॉग इन करने के बाद और प्रारंभिक प्रक्रिया को पूरा करने के बाद "इन्टीलाइजेशन बाड़" बंद हो गया है। उपयोगकर्ता स्थानीय वेब सर्वर पर चल रहे एप्लिकेशन तक पहुंच सकते हैं।
What is firstboot.d/30turnkey-init-fence is:
-
turnkey-init-band को एक सेवा के रूप में सक्षम बनाता है और इसे शुरू करता है
अद्यतन आर सी डी के माध्यम से सेवा सक्षम / अक्षम है
-
सक्रिय ~$USERNAME/.profile.d/turnkey-init-band
.profile.d स्क्रिप्ट ने एक dtach सत्र को सॉकेट से बाध्य किया
यदि कोई सत्र पहले से ही सॉकेट से जुड़ा हुआ है तो इससे जुड़ना
हम किस कमांड को डीटैक सत्र में चला रहे हैं?
turnkey-init -> निष्क्रियता (सेवा और प्रोफाइल.d)
-
हरबूट.d स्क्रिप्ट
स्क्रिप्ट जो हरबूट में हैं। हम उन लिपियों की संख्या को कम करने की कोशिश करते हैं जो यहां रहते हैं क्योंकि वे मूल रूप से एक गरीब आदमी की इनिट स्क्रिप्ट और वास्तविक इनिट स्क्रिप्ट अक्सर बेहतर विचार कर रहे हैं।
एक हेडलेस तैनाती में रूट पासवर्ड की स्थापना
हेडलेस तैनाती पर उपयोगकर्ता को सर्वर प्रारंभिककरण प्रक्रिया को पूरा करने के लिए रूट के रूप में लॉगिन करने की आवश्यकता होती है, लेकिन आप रूट के रूप में कैसे लॉग इन करते हैं?
यदि आप Proxmox का उपयोग कर रहे हैं तो कोई समस्या नहीं - यह आपको TurnKey छवि को तैनात करने से पहले रूट पासवर्ड चुनने का संकेत देता है।
AWS पर आप सर्वर लॉन्च करते समय चयनित SSH कुंजी जोड़ी के साथ लॉग इन कर सकते हैं।
अन्य वर्चुअलाइजेशन / निजी क्लाउड समाधान रूट पासवर्ड सेट करने के लिए अपनी मौजूदा तैनाती स्क्रिप्ट का उपयोग करने में सक्षम होना चाहिए, जैसे कि वे पहले से ही Debian और उबंटू के साथ करते हैं।
एक और उन्नत विकल्प पहली बार इसे बूट करने से पहले एप्लींस की फ़ाइल सिस्टम में /etc/inithooks.conf फ़ाइल को "preseed" करना है। यह आपको inithooks को प्री-कॉन्फ़िगर करने देता है न केवल रूट पासवर्ड बल्कि डेटाबेस और एप्लिकेशन पासवर्ड, व्यवस्थापक ईमेल, डोमेन नाम आदि।
हालांकि ध्यान दें कि पूर्ववर्ती का उपयोग "निषेध बाड़" को निष्क्रिय करता है। यदि आप TurnKey को पूर्ववर्ती बनाने का उपयोग कर रहे हैं तो मान लें कि आपने पहले से ही पूर्ववर्ती कॉन्फ़िगरेशन मान प्राप्त करने के लिए उपयोगकर्ता के साथ कुछ अन्य तरीके से बातचीत की है (जैसे, वेब कंट्रोल पैनल)।
Preseeding
डिफ़ॉल्ट रूप से, जब पहली बार सर्वर चल रहा है, तो पहलाबूट स्क्रिप्ट उपयोगकर्ता को इंटरैक्टिव रूप से वर्चुअल कंसोल के माध्यम से विभिन्न पासवर्ड और बुनियादी चुनने के लिए प्रेरित करेगा। अनुप्रयोग विन्यास सेटिंग्स।
सर्वर फ़ाइलसिस्टम में /etc/inithooks.conf बनाने और inithooks कॉन्फ़िगरेशन चर लिखने के द्वारा इस इंटरैक्टिव कॉन्फ़िगरेशन प्रक्रिया को बायपास करना संभव है। पहले सिस्टम बूट से पहले। उदाहरण के लिए:
cat>/etc/inithooks.conf<<EOF export ROOT_PASS=supersecretrootpass export DB_PASS=supersecretmysqlpass export APP_EMAIL=admin@example.com export APP_PASS=webappadminpassword export SEC_ALERTS=admin@example.com export SEC_UPDATES=FORCE export HUB_APIKEY=SKIP EOF
वहाँ संवेदनशील पासवर्ड छोड़ने के बारे में चिंता मत करो: पहले बूट के बाद, inithooks ने /etc/inithooks.conf को खाली कर दिया ताकि महत्वपूर्ण पासवर्ड गलती से स्पष्ट रूप से छोड़ न जाएं।
यह पूर्ववर्ती तंत्र कस्टम नियंत्रण पैनल, वर्चुअलाइजेशन समाधान आदि के साथ TurnKey को एकीकृत करना अपेक्षाकृत आसान बनाता है।
वास्तव में आप /etc/inithooks.conf कैसे बनाते हैं, आप किस तरह से उपयोग कर रहे आभासीकरण प्लेटफॉर्म की क्षमताओं और क्षमताओं को बना सकते हैं। उदाहरण के लिए, कई वर्चुअलाइजेशन प्लेटफॉर्म एक सुविधा प्रदान करते हैं जिसके माध्यम से आप पहले बूट से पहले स्क्रिप्ट चला सकते हैं या फाइल सिस्टम में फ़ाइलों को जोड़ सकते हैं।
प्रारंभिकीकरण हुक और पूर्ववर्ती विन्यास मापदंडों की सूची
नीचे इंटरैक्टिव फर्स्टबूट हुक की एक सूची है। सभी इंटरैक्टिव हुक में क्लाउड तैनाती, होस्टिंग और ISV एकीकरण का समर्थन करने के लिए पूर्ववर्ती विकल्प हैं।
ध्यान दें कि लगभग सभी सर्वरों के पास अपने विशिष्ट गुप्त-पुनर्धारण हुक हैं।
सभी सर्वरों के लिए आम:
30rootpass ROOT_PASS 50auto-apt-archive AUTO_APT_ARCHIVE [ SKIP ] 80tklbam HUB_APIKEY [ SKIP ] 85secalerts SEC_ALERTS [ SKIP ] 92etckeeper ETCKEEPER_COMMIT [ SKIP ] 95secupdates SEC_UPDATES [ SKIP | FORCE ]
हेडलेस बिल्ड्स के लिए विशिष्ट:
29preseed INITFENCE [ SKIP ]
अनुप्रयोग विशिष्ट:
35mysqlpass DB_PASS 35pgsqlpass DB_PASS 40ansible APP_PASS 40couchdb APP_PASS 40espocrm APP_PASS 40etherpad APP_PASS 40githttp APP_PASS 40icesecretset APP_PASS 40jenkins APP_PASS 40mediawiki APP_PASS 40mibew APP_PASS 40mongodb APP_PASS 40moodle APP_PASS 40mumblesupw APP_PASS 40observium APP_PASS 40odoo APP_PASS 40openvas APP_PASS 40orangehrm APP_PASS 40otrs APP_PASS 40phpmumbleadmin APP_PASS 40plone APP_PASS 40sugarcrm APP_PASS 40suitecrm APP_PASS 40torrentserver APP_PASS 40trac APP_PASS 40typo3 APP_PASS 40zoneminder APP_PASS 40nextcloud APP_PASS, APP_DOMAIN 40openldap APP_PASS, APP_DOMAIN 40owncloud APP_PASS, APP_DOMAIN 40zurmo APP_PASS, APP_DOMAIN 40domain-controller APP_PASS, APP_DOMAIN [, APP_REALM] 40b2evolution APP_PASS, APP_EMAIL 40collabtive APP_PASS, APP_EMAIL 40concrete5 APP_PASS, APP_EMAIL 40django APP_PASS, APP_EMAIL 40dokuwiki APP_PASS, APP_EMAIL 40drupal7 APP_PASS, APP_EMAIL 40e107 APP_PASS, APP_EMAIL 40ezplatform APP_PASS, APP_EMAIL 40gallery APP_PASS, APP_EMAIL 40joomla APP_PASS, APP_EMAIL 40kliqqi APP_PASS, APP_EMAIL 40limesurvey APP_PASS, APP_EMAIL 40mahara APP_PASS, APP_EMAIL 40mambo APP_PASS, APP_EMAIL 40mantis APP_PASS, APP_EMAIL 40mattermost APP_PASS, APP_EMAIL 40mayan APP_PASS, APP_EMAIL 40moinmoin APP_PASS, APP_EMAIL 40omeka APP_PASS, APP_EMAIL 40oscommerce APP_PASS, APP_EMAIL 40phpbb APP_PASS, APP_EMAIL 40processmaker APP_PASS, APP_EMAIL 40redmine APP_PASS, APP_EMAIL 40roundup APP_PASS, APP_EMAIL 40silverstripe APP_PASS, APP_EMAIL 40simpleinvoices APP_PASS, APP_EMAIL 40sitracker APP_PASS, APP_EMAIL 40twiki APP_PASS, APP_EMAIL 40ushahidi APP_PASS, APP_EMAIL 40vanilla APP_PASS, APP_EMAIL 40vtiger APP_PASS, APP_EMAIL 40wordpress APP_PASS, APP_EMAIL 40xoops APP_PASS, APP_EMAIL 40canvas APP_PASS, APP_EMAIL, APP_DOMAIN 40drupal8 APP_PASS, APP_EMAIL, APP_DOMAIN 40elgg APP_PASS, APP_EMAIL, APP_DOMAIN 40gitlab APP_PASS, APP_EMAIL, APP_DOMAIN 40gnusocial APP_PASS, APP_EMAIL, APP_DOMAIN 40icescrum APP_PASS, APP_EMAIL, APP_DOMAIN 40phplist APP_PASS, APP_EMAIL, APP_DOMAIN 40piwik APP_PASS, APP_EMAIL, APP_DOMAIN 40prestashop APP_PASS, APP_EMAIL, APP_DOMAIN 40punbb APP_PASS, APP_EMAIL, APP_DOMAIN 40simplemachines APP_PASS, APP_EMAIL, APP_DOMAIN 40zencart APP_PASS, APP_EMAIL, APP_DOMAIN 40magento APP_PASS, APP_EMAIL, APP_DOMAIN [, APP_PRIVKEY, APP_PUBKEY] 40bugzilla APP_PASS, APP_EMAIL [, APP_OUTMAIL] 40foodsoft APP_PASS, APP_EMAIL [, APP_VARIANT] 40ghost APP_PASS, APP_EMAIL, APP_DOMAIN [, APP_UNAME]
यदि पूर्ववर्ती नहीं है, तो उपयोगकर्ता को इंटरैक्टिव रूप से पूछा जाएगा। SKIP और FORCE विकल्प स्वयं व्याख्यात्मक होना चाहिए। ध्यान दें कि जब लाइव डेमो मोड में सेकंडडेट स्वचालित रूप से छोड़ दिया जाता है।
विकास नोट्स
तो आप एक नया सर्वर बना रहे हैं और प्रारंभिकीकरण हुक जोड़ना चाहते हैं। बहुत बढ़िया! यहाँ कुछ उदाहरण हैं जो आपको जाने के लिए हैं।
गैर-इंटरएक्टिव इनिटहुक
निम्नलिखित उदाहरण का उपयोग जूमला15 सर्वर में किया जाता है। यह फिर से उत्पन्न होता है। गुप्त, और जूमला उपयोगकर्ता के लिए एक यादृच्छिक mysql पासवर्ड सेट।
/usr/lib/inithooks/firstboot.d/20regen-joomla-secrets
#!/bin/bash -e
# regenerate joomla secret key and mysql password
. /etc/default/inithooks
updateconf() {
CONF=/var/www/joomla/configuration.php
sed -i "s/var $1 = \(.*\)/var $1 = '$2';/" $CONF
}
updateconf '\$secret' $(mcookie)$(mcookie)
PASSWORD=$(mcookie)
updateconf '\$password' $PASSWORD
$INITHOOKS_PATH/bin/mysqlconf.py --user=joomla --pass="$PASSWORD"
इंटरैक्टिव inithook
निम्नलिखित उदाहरण का उपयोग सभी सर्वरों में रूट पासवर्ड सेट करने के लिए किया जाता है। यदि ROOTPASS सेट नहीं है, तो उपयोगकर्ता को इंटरैक्टिव रूप से पासवर्ड दर्ज करने के लिए कहा जाएगा।
/usr/lib/inithooks/firstboot.d/30rootpass #!/bin/bash -e # set root password . /etc/default/inithooks [ -e $INITHOOKS_CONF ] && . $INITHOOKS_CONF $INITHOOKS_PATH/bin/setpasspass.py root --pass="$ROOTPASS"
/usr/lib/inithooks/bin/setpass.py
#!/usr/bin/python
# Copyright (c) 2010 Alon Swartz <alon@turnkeylinux.org>
"""Set account password
Arguments:
username username of account to set password for
Options:
-p --pass= if not provided, will ask interactively
"""
import sys
import getopt
import subprocess
from subprocess import PIPE
from dialog_wrapper import Dialog
def fatal(s):
print >> sys.stderr, "Error:", s
sys.exit(1)
def usage(e=None):
if e:
print >> sys.stderr, "Error:", e
print >> sys.stderr, "Syntax: %s <username> [options]" % sys.argv[0]
print >> sys.stderr, __doc__
sys.exit(1)
def main():
try:
opts, args = getopt.gnu_getopt(sys.argv[1:], "hp:", ['help', 'pass='])
except getopt.GetoptError, e:
usage(e)
if len(args) != 1:
usage()
username = args[0]
password = ""
for opt, val in opts:
if opt in ('-h', '--help'):
usage()
elif opt in ('-p', '--pass'):
password = val
if not password:
d = Dialog('TurnKey GNU/Linux - First boot configuration')
password = d.get_password(
"%s Password" % username.capitalize(),
"Please enter new password for the %s account." % username)
command = ["chpasswd"]
input = ":".join([username, password])
p = subprocess.Popen(command, stdin=PIPE, shell=False)
p.stdin.write(input)
p.stdin.close()
err = p.wait()
if err:
fatal(err)
if __name__ == "__main__":
main()