نشر Potato على Jetstream2
شغّل دراسة تعليق توضيحي على Potato في Jetstream2، السحابة البحثية التابعة لـ NSF، دون تكلفة مع تخصيص من ACCESS، باستخدام potato deploy وبيانات اعتماد OpenStack.
يضع potato deploy up --provider openstack --cloud jetstream2 دراسة تعليق توضيحي على Jetstream2، وهي سحابة بحثية تموّلها NSF، ولا تكلّف فيها شيئًا سوى وحدات الخدمة في تخصيصك. يحصل الباحثون في المؤسسات الأمريكية على وقت في Jetstream2 عبر تخصيص من ACCESS، فتستطيع دراسة بلا ميزانية أن تعمل على جهاز مخصص بقرص يبقى بعد إعادة التشغيل. ويحصل كل مثيل على اسم DNS تحت projects.jetstream-cloud.org، فيرى المعلّقون اسم مضيف عاديًا بشهادة HTTPS عادية. تتطلب هذه الصفحة Potato 2.10 أو أحدث وملف إعداد سبق أن شغّلته باستخدام potato start.
الحصول على تخصيص Jetstream2 وبيانات اعتماده
يعمل Jetstream2 على برمجيات OpenStack السحابية، ويصل إليه Potato عبر OpenStack. يصادق Potato باستخدام بيانات اعتماد تطبيق من OpenStack، وهي مفتاح مرتبط بتخصيص واحد يمكنك إلغاؤه وحده. يستغرق إعدادها ثلاث خطوات:
- اطلب تخصيص ACCESS Explore من allocations.access-ci.org واطلب وقت معالجة CPU على Jetstream2.
- سجّل الدخول إلى لوحة Horizon في Jetstream2 على js2.jetstream-cloud.org، وأنشئ بيانات اعتماد تطبيق، ونزّل ملف
clouds.yamlالخاص بها. - احفظ الملف باسم
~/.config/openstack/clouds.yamlوسمِّ المدخل فيهjetstream2، وهو الاسم الذي ترتبط به إعدادات Potato الافتراضية لـ Jetstream2.
ثم ثبّت إضافة OpenStack وتحقق من أن بيانات الاعتماد تعمل:
pip install 'potato-annotation[deploy-openstack]'
potato deploy providers --verifyتحديد من يمكنه تسجيل الدخول
لا يغيّر potato deploy إعدادات تسجيل الدخول لديك، واسم المضيف على Jetstream2 عام. إذا كان ملف الإعداد يسمح لأي شخص بالتسجيل، فسيبلّغ التشغيل التجريبي أدناه عن التحذير D003، "Anyone who finds the URL can register and annotate." (يستطيع أي شخص يعثر على عنوان URL أن يسجّل ويعلّق). في دراسة تعهيد جماعي يكون التسجيل المفتوح مقصودًا عادةً. أما للمعلّقين المسمَّين، فاسردهم تحت user_config.users مع allow_all_users: false (إدارة كلمات المرور) أو اجعلهم يسجّلون الدخول عبر مؤسستك (مصادقة SSO وOAuth) قبل أن تنشر.
مراجعة الخطة
لا ينشئ التشغيل التجريبي شيئًا، ويطبع كل خطوة من خطوات النشر، واسم المضيف الذي ستحمله المهمة، وما سيكلّفه المثيل من تخصيصك:
potato deploy up myproject/config.yaml --provider openstack --cloud jetstream2 --dry-runتنشئ الخطة مثيلًا واحدًا من نوع m3.small بـ 2 vCPU من الصورة Featured-Ubuntu24، على الشبكة المخصصة تلقائيًا لتخصيصك، مع عنوان IP عائم من الشبكة public. وتسمح مجموعة أمان بالاتصالات الواردة على المنافذ 22 و80 و443 فقط. ولأن مستخدم تسجيل الدخول الافتراضي يختلف من صورة إلى أخرى في Jetstream2، ينشئ Potato مستخدمه الخاص potato-deploy الذي يحمل مفتاح نشر مولَّدًا لهذا النشر. يختار --size نوعًا آخر من المثيلات، ويسمّي --network شبكة عندما لا تكون للتخصيص شبكة مخصصة تلقائيًا، ويضيف --volume-gb وحدة تخزين منفصلة لبيانات المهمة. يستهلك m3.small وحدتي خدمة (SU، عملة التخصيص) في الساعة، أي نحو 17,520 على مدار سنة إذا تُرك يعمل، لذا احذف المثيل عند انتهاء الدراسة.
النشر
شغّل الأمر نفسه من دون --dry-run، وأكّد الخطة عندما يطلب Potato ذلك:
potato deploy up myproject/config.yaml --provider openstack --cloud jetstream2تُقدَّم المهمة على https://potato-<name>.<allocation>.projects.jetstream-cloud.org، حيث يأتي <name> من اسم المهمة. ينشر Jetstream2 اسم DNS بعد دقيقة أو دقيقتين من ربط عنوان IP العائم، وينتظره Potato قبل أن يطلب شهادة Let's Encrypt صالحة 90 يومًا. وينتهي النشر بطباعة عنوان URL ومسار ملف مفتاح المشرف، .potato/secrets.json بجانب ملف الإعداد. يفتح مفتاح المشرف لوحة تحكم المشرف على /admin.
أثناء الدراسة، يبلّغ potato deploy status عمّا إذا كان الخادم وشهادته سليمين، ويتابع potato deploy logs myproject/config.yaml -f سجل الخادم. وتشغيل up مرة أخرى بعد تعديل ملف الإعداد يرفع النسخة الجديدة إلى المثيل نفسه.
إنهاء الدراسة
التعليقات موجودة على قرص المثيل، الذي يُحذف مع المثيل. اسحبها إلى جهازك أولًا، وافحصها، ثم احذف المثيل:
potato deploy pull myproject/config.yaml
potato deploy destroy myproject/config.yamlيكتب pull كل ما جمعه النشر في مجلد جديد باسم potato-pull-<name>-<timestamp>. ولا يعمل destroy على نشر لم يُسحب قط. وبعد أن يعمل، يتوقف المثيل عن استهلاك وحدات الخدمة.
سحب OpenStack الجامعية
يعمل المزوّد نفسه على سحابة OpenStack جامعية. ضع مدخل clouds.yaml الخاص بها تحت أي اسم ومرّر ذلك الاسم إلى --cloud. ومن دون إعدادات Jetstream2 الافتراضية، يستخدم Potato النوع m1.small وصورة Ubuntu 24.04 والشبكة الخارجية public، ويتجاوزها --size و--os-image و--network. لا تعطي السحابة الجامعية المثيل اسم DNS، لذا تُقدَّم المهمة على عنوان IP العائم بشهادة IP قصيرة العمر، كما في هدف AWS Lightsail.
استكشاف الأخطاء وإصلاحها
"No --network given and this project has no auto-allocated network" تعني أن التخصيص ليست له شبكة افتراضية. أنشئ شبكة وموجّهًا في Horizon أو Exosphere ومرّر --network <name>.
تستغرق الشهادة بضع دقائق في أول نشر، لأن اسم DNS يجب أن يُحَلّ قبل أن تتمكن Let's Encrypt من إصدارها.
قراءة إضافية
- تشغيل Potato محليًا أو في السحابة، للأهداف السحابية الأخرى
- نشر خادم تعليق توضيحي، لاختيار مضيف
- مرجع Jetstream2 وOpenStack