تفاصيل العمل

قمت بإنشاء نظام متكامل لنشر تطبيق Node.js على بيئة AWS السحابية باستخدام أدوات DevOps الحديثة، وتم أتمتة دورة حياة التطبيق بالكامل من تهيئة البنية التحتية إلى النشر التلقائي بعد كل تحديث على GitHub. إليك تفاصيل الخطوات التي تم تنفيذها:

? أولًا: بناء البنية التحتية (Infrastructure as Code) باستخدام Terraform

إنشاء VPC مخصص يحتوي على Subnets عامة وخاصة لتقسيم الشبكة حسب الأمان.

إطلاق خوادم EC2 للمكونات التالية:

Jenkins Master (محلي)

Jenkins Slave (خادم خاص داخل AWS)

Node.js Application (خوادم تطبيقات خاصة)

RDS (قاعدة بيانات MySQL)

Redis (للتخزين المؤقت)

إعداد Bastion Host للوصول الآمن إلى الخوادم الخاصة من خلال SSH.

إعداد Application Load Balancer (ALB) لتوجيه الطلبات نحو خوادم التطبيق.

توليد وربط مفاتيح SSH تلقائيًا بين الخوادم وربطها بالدور المناسب (IAM Role).

️ ثانيًا: إعداد الخوادم تلقائيًا باستخدام Ansible

إنشاء أدوار (Roles) مستقلة لتنفيذ المهام المختلفة مثل:

تثبيت Docker وNode.js وGit على الخوادم.

إعداد Jenkins Slave ليتصل بـ Jenkins Master.

نسخ ملفات البيئة (environment) وتكوين المشروع تلقائيًا.

تكوين خوادم التطبيقات لتكون جاهزة للنشر فور إطلاقها.

ثالثًا: إعداد بايبلاين CI/CD باستخدام Jenkins

إنشاء بايبلاين آلي يقوم بـ:

جلب الكود من GitHub عند كل Push.

تثبيت الحزم عبر npm.

تنفيذ اختبارات الوحدة.

بناء صورة Docker للتطبيق.

رفع الصورة إلى Docker Hub (أو Registry خاص).

نشر الصورة على خوادم Node.js الخاصة داخل AWS باستخدام SSH.

رابعًا: تأمين الاتصال بين Jenkins Master وSlave

إعداد نفق SSH عكسي (Reverse Tunnel) من الخادم المحلي إلى Bastion.

تمكين AllowTcpForwarding وGatewayPorts على Bastion لتسهيل النفق.

جعل Jenkins Master يتصل بخادم Jenkins Slave بشكل آمن داخل شبكة AWS الخاصة.

خامسًا: إرسال إشعارات تلقائية على Slack

تكامل Jenkins مع Slack لإرسال رسائل فورية عند:

بداية البايبلاين

نجاح أو فشل خطوات البناء أو النشر

الانتهاء من النشر

بطاقة العمل

اسم المستقل
عدد الإعجابات
0
تاريخ الإضافة
تاريخ الإنجاز