كل الوحدات البيئات النشر البنية ككود النشر التلقائي English

النشر والبنية التحتية ككود

خُذ الصورة إلى الإنتاج — وعرّف الخوادم التي تعمل عليها كشيفرةٍ خاضعةٍ للإصدارات.

الوحدة 10 · نشرٌ قابل للتكرار، بلا نقرٍ يدوي.

متقدّم النشر والبنية ككود يتضمّن مختبرًا ~60 دقيقة

ماذا ستتعلّم

  • ما البيئات (تطوير / تجهيز / إنتاج) ولماذا توجد
  • نشر الخزنة المحوسَبة إلى مضيفٍ حقيقي
  • تعريف البنية ككود بـTerraform (التزويد) وAnsible (التهيئة)
  • ربط النشر بـCI كي يُشحن الدفع إلى main تلقائيًّا
  • مختبر عملي: اجعل الخزنة حيّةً على رابط، وبنيتها ملتقَطةً في كود

المتطلبات المسبقة: الوحدة 9 (الصورة مبنيّة في CI). تعمّق: مختبر DevOps: البنية ككود والسحابة الحقيقية.

البيئات

لا تختبر أمام مستخدميك. المشاريع الحقيقية تشغّل التطبيق ذاته في بيئاتٍ منفصلة، لكلٍّ إعدادها وبياناتها:

البيئةالغرض
التطويرجهازك / حاوياتك — حيث تبني.
التجهيز (Staging)نسخةٌ شبيهةٌ بالإنتاج للفحوص النهائية قبل الإصدار.
الإنتاجالبيئة الحيّة التي يلمسها المستخدمون الحقيقيون.

الحاوية تجعل هذا تافهًا

لأن الوحدة 8 جمّدت التطبيق في صورة، «انشر إلى الإنتاج» يعني فقط «شغّل تلك الصورة ذاتها على مضيف الإنتاج بإعداد الإنتاج». الصندوق نفسه، متغيّرات بيئةٍ مختلفة.

إلى الإنتاج

أبسط نشرٍ حقيقي: جهازٌ سحابيٌّ صغير عليه Docker، يسحب صورتك ويشغّلها بـCompose. بالعبارة البسيطة:

# on the production host docker pull ghcr.io/YOU/snippet-vault-api:latest docker compose -f docker-compose.prod.yml up -d

فعل هذا يدويًّا مرّةً لا بأس به للتعلّم. لكن الخطوات اليدوية تنحرف وتُنسى — وهي بالضبط المشكلة التي تحلّها البنية ككود.

البنية التحتية ككود

النقر في وحدة تحكّم سحابية هو نظير «.env-في-المستودع» للبنية: غير قابلٍ للتكرار ويستحيل مراجعته. البنية ككود تعرّف خوادمك في ملفاتٍ خاضعةٍ للإصدارات، فتصير البيئة كلّها قابلةً للتكرار وللمقارنة.

الأداةالمهمّة
Terraformالتزويد — إنشاء الجهاز والشبكة والجدار الناري من كود.
Ansibleالتهيئة — تثبيت Docker ونشر التطبيق على ذلك الجهاز.

أعِد استخدام مختبر DevOps، لا تعِد اختراعه

وحدة البنية ككود في مختبر DevOps ومجلّدا sample-app/terraform وsample-app/ansible فيها قالبٌ عامل. وجّه مساعدك إليها، وكيّفها للخزنة، وراجع كل سطر — فشيفرة البنية قد تكلّف مالًا حقيقيًّا إن كانت خاطئة.

راجع شيفرة بنية الذكاء الاصطناعي خصوصًا

سيفتح المساعد بسرورٍ جدارًا ناريًّا للعالم أو يكتب رمزًا صراحةً. البنية أعلى مكانٍ مخاطرةً لإمساك الزمام (الوحدة 5). اقرأها كالصقر، وأبقِ الأسرار في متغيّرات، لا في الكود أبدًا.

نشرٌ تلقائيٌّ عند الاخضرار

خطّ نهاية CD: وسّع خطّ الوحدة 9 كي ينشر تلقائيًّا حين ينجح CI على main — يسحب الصورة الجديدة، يعيد تشغيل الحاوية. الآن طلب دمجٍ مدموج يصير إصدارًا حيًّا، بلا يدين، كل مرّة.

الحلقة الكاملة، مؤتمتة

فكرة → مواصفة → بناء → اختبار → بوابة → CI → نشر. من هنا، شحن تغييرٍ ما هو إلا دمج طلب دمجٍ مُراجَع. ذاك معيار DevOps الذي كانت الدورة كلّها تبني نحوه.

مختبر عملي: اشحنها حيّةً

ستنشر الخزنة إلى مضيفٍ حقيقي وتلتقط بنيتها ككود. جهازٌ من الطبقة المجانية مثاليّ، لكن مضيف حاوياتٍ مُدارًا يفي أيضًا — الهدف رابطٌ عام مع بنيةٍ تستطيع إعادة إنشائها من ملفات.

ما تحتاجه

مستودعك على GitHub من الوحدة 9 (الصورة تُبنى في CI)، ومضيفٌ للنشر (جهازٌ سحابيٌّ من الطبقة المجانية، أو منصّة حاوياتٍ مُدارة).

1

افرَع وأضِف compose للإنتاج

git checkout -b feature/deploy

اطلب من المساعد docker-compose.prod.yml يشغّل صورك المنشورة بمتغيّرات بيئة إنتاج (من المضيف، لا مُودَعة).

2

التقط البنية ككود

Using the DevOps Lab terraform/ansible sample as a template, write IaC to: provision one small VM with a firewall (allow only 80/443/22), install Docker, and run docker-compose.prod.yml. Keep secrets in variables.

راجع كل سطر — خصوصًا قواعد الجدار الناري وأيّ أسرار.

3

انشر وصِل إليها

شغّل خطوات التزويد + التهيئة (أو نشر مضيفك المُدار). افتح رابط التطبيق العام في متصفّح وأنشئ مقتطفًا. إنه حيٌّ على الإنترنت.

4

أتمِتها (اختياريٌّ ومُستحسَن)

أضِف مهمّة نشرٍ إلى سير عمل CI تعمل على main بعد نجاح الاختبارات. ادمج تغييرًا صغيرًا وشاهده ينشر نفسه.

5

ادمج وتأمّل

git add . git commit -m "Add prod compose + IaC; deploy the vault" git checkout main && git merge feature/deploy

في REFLECTION.md: الصق رابطك الحيّ، ودوّن شيئًا في شيفرة بنية الذكاء الاصطناعي اضطررت لإحكامه أمنيًّا. أودِع.

ما الذي تسلّمه

مستودعك مع الرابط الحيّ. تحقّق من نفسك:

  • الخزنة قابلة للوصول على رابطٍ عام وتعمل
  • البنية معرَّفة في كودٍ مُودَع (Terraform/Ansible أو ما يعادلهما)
  • لا أسرار في شيفرة البنية؛ والجدار الناري مقيَّد
  • REFLECTION.md فيه الرابط وإصلاح أمانٍ قمت به

مسرد مصغّر

المصطلحالمعنى المبسّط
البيئةمكانٌ يعمل فيه التطبيق: تطوير، تجهيز، أو إنتاج.
التزويدإنشاء الخوادم/الشبكة التي يحتاجها التطبيق.
Terraformأداةٌ لتزويد البنية من كود.
Ansibleأداةٌ لتهيئة الخوادم ونشر التطبيقات من كود.
IaCالبنية ككود — خوادمٌ معرَّفة في ملفاتٍ خاضعةٍ للإصدارات.

الخلاصة وما التالي

صار لديك الآن

خزنة المقتطفات حيّةً على الإنترنت، وبنيتها معرَّفةً في كودٍ قابل للمراجعة، و(اختياريًّا) خطٌّ ينشر عند كل دمجٍ أخضر. تطبيقك المبنيّ بالذكاء الاصطناعي منتجٌ حقيقيٌّ مشحون.

التالي: الوحدة 11 — المراقبة وقابلية الرصد. الحيّ ليس المنتهى — الآن نجعل التطبيق يخبرك متى يكون سليمًا ومتى لا، بالسجلّات والمقاييس والتنبيهات.

النشر والبنية التحتية ككود

الأهداف البيئات النشر البنية ككود النشر التلقائي المختبر العملي المسرد الخلاصة