ملخص:
تعتمد جميع توزيعات Linux الرئيسية على مديري الحزم لتثبيت البرامج بطريقة آمنة ومحكومة.
هذا الاقتراح هو أن الحزم يتم إنشاؤها بتنسيقات RPM و deb و opkg كنقطة بداية ، مع إضافة تنسيقات حزم إضافية في تاريخ لاحق.
لماذا نحتاج هذا؟
تمنع العديد من مؤسسات المؤسسات git من الاتصال بأي خوادم بخلاف خوادمها ، وقد لا تسمح بأوامر wget
أيضًا.
لا يتوفر Docker أيضًا داخل هذه المؤسسات ، ولكن الوصول إلى مستودعات الحزم يعد "كمية معروفة" وبالتالي يسهل بيعها لفرق الأمان ، خاصة وأن الحزم تميل إلى التوقيع بشكل كامل كجزء من عملية الإنشاء.
هناك أيضًا مواقف لا يكون Docker مناسبًا لها. يمكن أن يشمل ذلك الوقت الذي يريد فيه مكاملو الأنظمة / مقدمو الخدمات المدارة التوسع باستخدام مجموعة مقاييس تلقائية لـ AWS استنادًا إلى المثيلات بدلاً من الحاويات ، أو للتركيبات المعدنية في بيئات آمنة.
يعد التثبيت عبر أدوات إدارة التكوين مثل Ansible أو Chef أو Puppet أمرًا صعبًا للغاية عندما لا تتوفر لديك حزم.
أخيرًا ، يعد التثبيت من مستودع git بدلاً من الحزمة أمرًا صعبًا بدون برامج التحويل البرمجي ، مما يفتح خطرًا أمنيًا عن طريق تثبيت برامج التحويل البرمجي على أنظمة الإنتاج.
ما هو موجود بالفعل؟
في الوقت الحالي ، لدينا خيار بين حاويتين ( ttn-lw-stack
و ttn-lw-cli
) أو بناء ثنائيات بنفس الاسم من git.
يتم النشر إما عبر docker pull
أو git clone
، وكلاهما قد لا يعملان خلف جدران الحماية التعليمية / المؤسسية.
ما المفقود؟
إمكانية التثبيت عبر yum
أو apt
أو opkg
كيف تقترح تنفيذ هذا؟
يجب أن يكون هذا سهل التنفيذ نسبيًا باستخدام GO Releaser ، لكن GO ليست لغة أعرفها بشكل خاص (حتى الآن!)
بيئة:
Linux - يعتمد على CentOS / RHEL ، على أساس Debian / Ubuntu ، يعتمد على OpenWRT
ماذا يمكنك أن تفعل بنفسك وماذا تحتاج إلى مساعدة؟
سأحتاج إلى تأكيد أن هذه هي الطريقة المناسبة لتعبئة تطبيق go للنشر ، ثم بعض المساعدة في التنفيذ من شخص يفهم GO!
سأبدأ بإضافة حزم إلى APT و AUR و https://github.com/nixos/nixpkgs ، لأنني على دراية بصيغة هذه الحزم. سيتم إضافة أخرى في وقت لاحق.
المساهمات ، بالطبع ، دائما موضع ترحيب!
rvolosatovs هل ستستخدم go-releaser ، أو طريقة أخرى لإنشاء الحزم؟
سأكون سعيدًا بالعمل على جانب RPM للأشياء طالما أنني أعرف ما الذي تستخدمه لإنشائها! :)
سنصنع هذا الجزء من القرص المضغوط أيضًا.
إضافة brew
إلى قائمة الرغبات.
فقط أضيف دعمي لهذا. لم أستخدم Docker من قبل ، وعلى الرغم من أنني أقدر وجود الكثير من لغات البرمجة ، فقد كانت هذه قفزة كبيرة لشخص لم يقم بذلك من قبل. في حين أن عدم التحدث من الريبو هو كيف يحب المطورون القيام بالأشياء ، إلا أنها ليست صديقة للمستخدمين النهائيين.
نشكرك على كل عملك في هذا الأمر ، وآمل أن أجد وقتًا في الأيام القليلة المقبلة لإضافة دعم RPM واختباره.
proffalken سنقوم ببناء حزمة RPM كجزء من CI - ستتمكن من العثور عليها في صفحة الإصدارات الخاصة بنا بمجرد إصدارنا. (لمعلوماتك ، يدعم github أيضًا موجز Atom للإصدارات: https://github.com/thethingsnetwork/lorawan-stack/releases.atom)
لقد اتبعت اقتراحك باستخدام أداة goreleaser.
فيما يتعلق بحزمة RPM نفسها - إنها (في الوقت الحالي) فقط https://github.com/TheThingsNetwork/lorawan-stack/blob/b1183962c502e6b53191086c23567c546c2b8ec5/.goreleaser.yml#L79 -L92
أظن أن موقع الواجهة الأمامية ، على سبيل المثال ، غير قياسي لحزم RPM ، وفي الواقع ، ليس افتراضيًا للمكدس أيضًا (نتوقع أن يكون عند /srv/ttn-lorawan/public
).
لذا فإن مدخلاتك حول كيفية القيام بذلك ستكون مفيدة للغاية.
لاحظ أنه بالنسبة إلى brew
، على سبيل المثال ، نقوم بلف ثنائي المكدس لتعيين متغير البيئة ذي الصلة للإشارة إلى الواجهة الأمامية:
https://github.com/TheThingsNetwork/lorawan-stack/blob/b1183962c502e6b53191086c23567c546c2b8ec5/.goreleaser.yml#L116 -L119
أنا متأكد من أن الموقع المتوقع لهذا في حزمة RPM مختلف ، ولكن يمكننا استخدام نفس النهج هناك.
rvolosatovs منطقي تمامًا بالنسبة لي.
من المحتمل أن يكون إعداد env vars هو الأفضل في برنامج نصي لخدمة systemd ، سأحاول وضع أحدهما معًا في أسرع وقت ممكن.
يعد لصق الأشياء بـ /srv/ttn-lorawan/public
أيضًا مقبولًا تمامًا :)
rvolosatovs هل يمكنك تحديث الملصقات و / أو التعليق الأصلي للإشارة إلى أننا لسنا بحاجة إلى مساعدة بعد الآن ، أو المساعدة في توزيع معين؟ قبل أن يبدأ أعضاء المجتمع في تنفيذ هذا بفارغ الصبر بينما يكون معظمه قيد التقدم.
ممنوع بسبب عدم وجود إصدار v3.0.0
.
ليس من المنطقي نشر إصدارات ما قبل النشر في المستودعات.
مغلق بسبب الإصدار. لدينا دعم Snappy و Brew ، بالإضافة إلى ملفات deb و rpm
التعليق الأكثر فائدة
سنصنع هذا الجزء من القرص المضغوط أيضًا.
إضافة
brew
إلى قائمة الرغبات.