Terraform-aws-github-runner: أتمتة إنشاء عداء غير متصل بالإنترنت

تم إنشاؤها على ٦ فبراير ٢٠٢١  ·  11تعليقات  ·  مصدر: philips-labs/terraform-aws-github-runner

يتطلب النهج الحالي أن يكون لدينا عداء غير متصل بالشبكة مرة أخرى. تتم إزالة هؤلاء المتسابقين في وضع عدم الاتصال بواسطة github eacht 60 يومًا. لذلك سيكون من المناسب أتمتة العملية للحفاظ على عداء واحد غير متصل بالإنترنت حتى نتمكن من تقليص حجمه إلى 0.

اتجاه الحل المحتمل

التسجيل عبر مثيل ED2

استخدم نفس الآلية التي نستخدمها لتدوير العدائين باستخدام لامدا إضافي ينفذ فقط بيانات المستخدم حتى خطوة التكوين. وتأكد أيضًا من إزالة مثيل ec2

عكس عملية تكوين جيثب egineer

قم بإنشاء lamda التي تستخدم مكالمات github http بناءً على الهندسة العكسية ، راجع https://github.com/actions/runner/issues/558

قم بتشغيل ملف التكوين في ملف lambda

قم بإنشاء لامدا يمكنها إخراج التكوين عبر طبقة لامدا

enhancement help wanted

التعليق الأكثر فائدة

npalm لقد اكتشفت معظم المنطق وعناوين url وما إلى ذلك المتعلقة بتسجيل عداء. أخطط لإنشاء وحدة Python للتعامل مع هذا باستخدام python 3x والطلبات. سيكون هذا على الأرجح نهاية هذا الأسبوع عندما أكون خارج العمل.

إذا كنت تفضل تنفيذه بنفسك ، فيمكنني مشاركة ملاحظاتي التي جمعتها حول العملية قبل ذلك الحين.

أعتقد بصدق أنني أرغب في قضاء المزيد من الوقت في تتبع العملية بأكملها ، حتى تتمكن من سحب وتنفيذ مهام سير العمل أيضًا ، لكن تسجيل العداء الجديد كان أمرًا ضروريًا بالنسبة لي.

في الأساس العملية التي وجدتها تعمل:
احصل على رمز عداء عبر api باستخدام أرصدة التطبيق أو التطبيق
انشر رمزًا مميزًا لإفشاء نقطة النهاية ، واستقبل بيانات json مرة أخرى بنقطة نهاية سرية جديدة و jwt
استخدم jwt للمصادقة عبر رأس حامل المصادقة ، باستخدام نقطة نهاية تم الكشف عنها حديثًا ، يمكن الاستعلام عن "الوكلاء" الحاليين (كما يطلق عليهم في واجهة برمجة التطبيقات) ، أو إضافة واحد جديد ، أو تحديث واحد موجود.

من الواضح أن هناك المزيد من التفاصيل المتضمنة ، بما في ذلك إنشاء مفتاح RSA ومجموعة من الرؤوس. لم أنظر أبعد من التسجيل حتى الآن ...

ال 11 كومينتر

npalm لقد اكتشفت معظم المنطق وعناوين url وما إلى ذلك المتعلقة بتسجيل عداء. أخطط لإنشاء وحدة Python للتعامل مع هذا باستخدام python 3x والطلبات. سيكون هذا على الأرجح نهاية هذا الأسبوع عندما أكون خارج العمل.

إذا كنت تفضل تنفيذه بنفسك ، فيمكنني مشاركة ملاحظاتي التي جمعتها حول العملية قبل ذلك الحين.

أعتقد بصدق أنني أرغب في قضاء المزيد من الوقت في تتبع العملية بأكملها ، حتى تتمكن من سحب وتنفيذ مهام سير العمل أيضًا ، لكن تسجيل العداء الجديد كان أمرًا ضروريًا بالنسبة لي.

في الأساس العملية التي وجدتها تعمل:
احصل على رمز عداء عبر api باستخدام أرصدة التطبيق أو التطبيق
انشر رمزًا مميزًا لإفشاء نقطة النهاية ، واستقبل بيانات json مرة أخرى بنقطة نهاية سرية جديدة و jwt
استخدم jwt للمصادقة عبر رأس حامل المصادقة ، باستخدام نقطة نهاية تم الكشف عنها حديثًا ، يمكن الاستعلام عن "الوكلاء" الحاليين (كما يطلق عليهم في واجهة برمجة التطبيقات) ، أو إضافة واحد جديد ، أو تحديث واحد موجود.

من الواضح أن هناك المزيد من التفاصيل المتضمنة ، بما في ذلك إنشاء مفتاح RSA ومجموعة من الرؤوس. لم أنظر أبعد من التسجيل حتى الآن ...

gertjanmaas أعتقد أنك

@ miked63017 اسمحوا لي أن أعرف إذا لم تصل إليها. نحن نبحث عن هذا أيضًا ، لذا سيكون لدي بعض الوقت للعمل عليه.

تحرير: لست متأكدًا مما إذا كنت قد رأيت ذلك ، ولكن تم إصدار هذا حديثًا لـ Python: https://github.blog/2020-12-18-learn-about-ghapi-a-new-third-party-python-client-for- the-github-api /

npalmmcaulifn هنا هو ارتباط، وانها لا تزال beta'ish جدا، ويتم توثيقها جيدا، ولكن أعتقد أننا يمكن أن نقول الشيء نفسه عن API المركز الثاني / الإجراءات بشكل عام :-)

https://github.com/miked63017/pyghrunner

mcaulifn في RE إلى وحدة ghapi تبدو رائعة ، لكن معظم هذه المكالمات عبارة عن قطع غير موثقة من واجهة برمجة التطبيقات ، وربما تكون عرضة للتغيير.

بشكل عام يبدو أنه يجب أن يعمل. هل تخطط لإضافته إلى هذا الريبو؟

gertjanmaas أي رأي؟

npalmmcaulifn لست متأكدًا مما إذا كان لدي سياق لإضافته هنا إلى هذا الريبو ، فأنا شخصياً أعمل في مشغل GKE للقيام لكنني اعتقدت أنه يمكن أن يساعد الآخرين على مشاركة بعض التعليمات البرمجية البسيطة للتكامل مع مشاريع أخرى. يبدو أنه طلب شائع إلى حد ما لهذه الوظيفة. إذا كنت تريد مني أن أتخذ قرارًا بشأن الإضافة هنا عبر العلاقات العامة ، فربما يمكنني قضاء بعض الوقت في نهاية هذا الأسبوع.

بحثت بسرعة في كود الثعبان ويبدو أنه يؤكد ما رأيته عندما حاولت إجراء هندسة عكسية له منذ فترة. سيكون رائعا إذا كان هذا يمكن تنفيذه هنا. تعبت من إضافة المتسابقين في وضع عدم الاتصال باليد: P

gertjanmaas حيث أقوم بتشغيل (ما يعادل) هذا الرمز (في مكتبة خاصة) ، نقوم فقط بتشغيل الطرق القليلة بشكل دوري ، أو استجابة لحدث ، والكتابة فوق "العداء الافتراضي" السابق. نحن في الأساس نستخدمه كعنصر نائب ، لذا فإن الوظائف في قائمة الانتظار بدلاً من الفشل لأنه لا يوجد متسابقون يحملون تسميات. ثم نلقي نظرة على تفاصيل الوظائف ، ونقوم بتدوير العداء المناسب ، مع التسميات المناسبة حسب الحاجة ، وباستخدام العلم --once .

لا يزال لدي خطط لمزيد من التحقيق في إنشاء عداء مخصص كامل ، على الأرجح مكتوب بلغة بيثون ، يمكن بعد ذلك تضمينه في أماكن أخرى. هذا فقط لم يكن أولوية عالية بالنسبة لي حتى الآن.

ماذا عن إلغاء تسجيل العداء؟

يحتاج العداء غير المتصل بالإنترنت إلى إعادة إنشائه كل 30 يومًا ، حتى لا يكون لديه مطلقًا أي متسابقين في المؤسسة.

يجب أن يكون هذا آليًا أيضًا.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات