Skip to content

Jetstream2 पर Potato तैनात करना

potato deploy और एक OpenStack क्रेडेंशियल से Potato एनोटेशन अध्ययन को NSF के शोध क्लाउड Jetstream2 पर ACCESS आवंटन के साथ बिना लागत चलाएँ।

potato deploy up --provider openstack --cloud jetstream2 एक एनोटेशन अध्ययन को NSF द्वारा वित्तपोषित शोध क्लाउड Jetstream2 पर चलाता है, जहाँ आपके आवंटन की सर्विस यूनिट के अलावा इसकी कोई लागत नहीं है। अमेरिकी संस्थानों के शोधकर्ताओं को Jetstream2 का समय ACCESS आवंटन से मिलता है, इसलिए बिना बजट वाला अध्ययन भी एक समर्पित मशीन पर चल सकता है, जिसकी डिस्क रीस्टार्ट के बाद बची रहती है। हर इंस्टेंस को projects.jetstream-cloud.org के तहत एक DNS नाम मिलता है, इसलिए एनोटेटरों को एक सामान्य होस्टनेम और सामान्य HTTPS प्रमाणपत्र दिखता है। इस पृष्ठ के लिए Potato 2.10 या उसके बाद का संस्करण और ऐसा कॉन्फ़िग चाहिए जिसे आप potato start से चला चुके हों।

Jetstream2 आवंटन और क्रेडेंशियल पाना

Jetstream2 OpenStack क्लाउड सॉफ़्टवेयर पर चलता है, और Potato उस तक OpenStack के ज़रिए पहुँचता है। Potato एक OpenStack application credential से प्रमाणीकरण करता है, जो एक ही आवंटन से जुड़ी कुंजी है और जिसे आप अलग से रद्द कर सकते हैं। इसे सेट करने में तीन चरण लगते हैं:

  1. allocations.access-ci.org पर ACCESS Explore आवंटन का अनुरोध करें और Jetstream2 CPU समय माँगें।
  2. js2.jetstream-cloud.org पर Jetstream2 के Horizon डैशबोर्ड में साइन इन करें, एक application credential बनाएँ, और उसकी clouds.yaml फ़ाइल डाउनलोड करें।
  3. फ़ाइल को ~/.config/openstack/clouds.yaml के रूप में सहेजें और उसकी एंट्री का नाम jetstream2 रखें, क्योंकि Potato के Jetstream2 डिफ़ॉल्ट इसी नाम से जुड़े हैं।

फिर OpenStack extra इंस्टॉल करें और जाँचें कि क्रेडेंशियल काम करता है:

bash
pip install 'potato-annotation[deploy-openstack]'
potato deploy providers --verify

तय करना कि कौन साइन इन कर सकता है

potato deploy आपकी साइन-इन सेटिंग्स नहीं बदलता, और Jetstream2 का होस्टनेम सार्वजनिक होता है। अगर कॉन्फ़िग किसी को भी रजिस्टर करने देता है, तो नीचे का ड्राई रन चेतावनी D003 दिखाता है, "Anyone who finds the URL can register and annotate." (URL ढूँढने वाला कोई भी व्यक्ति रजिस्टर करके एनोटेट कर सकता है।) क्राउडसोर्स किए गए अध्ययन में खुला पंजीकरण आम तौर पर जान-बूझकर रखा जाता है। नामित एनोटेटरों के लिए, तैनात करने से पहले उन्हें allow_all_users: false के साथ user_config.users में सूचीबद्ध करें (पासवर्ड प्रबंधन) या उन्हें अपने संस्थान से साइन इन करवाएँ (SSO और OAuth प्रमाणीकरण)।

योजना जाँचना

ड्राई रन कुछ नहीं बनाता और तैनाती का हर चरण, टास्क को मिलने वाला होस्टनेम, और इंस्टेंस आपके आवंटन से कितना ख़र्च करेगा, यह प्रिंट करता है:

bash
potato deploy up myproject/config.yaml --provider openstack --cloud jetstream2 --dry-run

योजना Featured-Ubuntu24 इमेज से 2 vCPU वाला एक m3.small इंस्टेंस बनाती है, जो आपके आवंटन के auto-allocated नेटवर्क पर होता है और public नेटवर्क से एक floating IP पाता है। एक security group केवल पोर्ट 22, 80 और 443 पर आने वाले ट्रैफ़िक की अनुमति देता है। Jetstream2 की अलग-अलग इमेज में डिफ़ॉल्ट लॉगिन उपयोगकर्ता अलग होता है, इसलिए Potato अपना potato-deploy उपयोगकर्ता बनाता है, जिसके पास इस तैनाती के लिए बनाई गई deploy key होती है। --size दूसरा flavor चुनता है, --network तब नेटवर्क का नाम देता है जब आवंटन में कोई auto-allocated नेटवर्क न हो, और --volume-gb टास्क के डेटा के लिए एक अलग वॉल्यूम जोड़ता है। एक m3.small हर घंटे 2 सर्विस यूनिट (SU, आवंटन की मुद्रा) ख़र्च करता है, यानी चालू छोड़ने पर एक साल में लगभग 17,520, इसलिए अध्ययन ख़त्म होने पर इंस्टेंस नष्ट कर दें।

तैनात करना

वही कमांड --dry-run के बिना चलाएँ, और Potato के पूछने पर योजना की पुष्टि करें:

bash
potato deploy up myproject/config.yaml --provider openstack --cloud jetstream2

टास्क https://potato-<name>.<allocation>.projects.jetstream-cloud.org पर सर्व होता है, जहाँ <name> टास्क के नाम से आता है। floating IP जुड़ने के एक-दो मिनट बाद Jetstream2 DNS नाम प्रकाशित करता है, और Potato 90 दिन का Let's Encrypt प्रमाणपत्र माँगने से पहले उसका इंतज़ार करता है। अंत में तैनाती URL और एडमिन कुंजी फ़ाइल का पाथ प्रिंट करती है, जो आपके कॉन्फ़िग के बगल में .potato/secrets.json है। एडमिन कुंजी /admin पर एडमिन डैशबोर्ड खोलती है।

अध्ययन के दौरान potato deploy status बताता है कि सर्वर और उसका प्रमाणपत्र ठीक हैं या नहीं, और potato deploy logs myproject/config.yaml -f सर्वर लॉग पर नज़र रखता है। कॉन्फ़िग बदलने के बाद up दोबारा चलाने से नया संस्करण उसी इंस्टेंस पर अपलोड होता है।

अध्ययन समाप्त करना

एनोटेशन इंस्टेंस की डिस्क पर हैं, जो इंस्टेंस के साथ ही मिट जाती है। पहले उन्हें अपनी मशीन पर निकालें, जाँचें, और फिर इंस्टेंस हटाएँ:

bash
potato deploy pull myproject/config.yaml
potato deploy destroy myproject/config.yaml

pull तैनाती का इकट्ठा किया हुआ सब कुछ एक नई potato-pull-<name>-<timestamp> डायरेक्टरी में लिखता है। destroy ऐसी तैनाती पर नहीं चलता जिसका कभी pull नहीं हुआ। इसके चलने के बाद इंस्टेंस SU ख़र्च करना बंद कर देता है।

कैंपस OpenStack क्लाउड

यही प्रदाता किसी कैंपस OpenStack क्लाउड पर भी काम करता है। उसकी clouds.yaml एंट्री को कोई भी नाम दें और वह नाम --cloud को दें। Jetstream2 डिफ़ॉल्ट के बिना Potato m1.small flavor, Ubuntu 24.04 इमेज और public बाहरी नेटवर्क का इस्तेमाल करता है, और --size, --os-image और --network इन्हें बदलते हैं। कैंपस क्लाउड इंस्टेंस को कोई DNS नाम नहीं देता, इसलिए टास्क उसके floating IP पर एक अल्पकालिक IP प्रमाणपत्र के साथ सर्व होता है, जैसे AWS Lightsail टारगेट पर।

समस्या निवारण

"No --network given and this project has no auto-allocated network" का मतलब है कि आवंटन में कोई डिफ़ॉल्ट नेटवर्क नहीं है। Horizon या Exosphere में एक नेटवर्क और राउटर बनाएँ और --network <name> दें।

पहली तैनाती पर प्रमाणपत्र में कुछ मिनट लगते हैं, क्योंकि Let's Encrypt उसे जारी कर सके, इससे पहले DNS नाम का resolve होना ज़रूरी है।

आगे पढ़ें