0Pricing
Ansible Academy · درس

تنسيق طبقات الويب والتطبيق وقاعدة البيانات

رتّب عملية نشر متعددة الطبقات

تنسيق طبقات الويب والتطبيق وقاعدة البيانات درس مجاني في Ansible Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Ansible Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Ansible Academy 4 دروس في المجموع.

للتطبيقات الحقيقية طبقات

تنقسم البنية المعتادة إلى طبقات: خوادم الويب، وخوادم التطبيقات، وقاعدة البيانات. ولكل طبقة دورها الخاص وترتيب النشر الخاص بها. 🏗️

الترتيب مهم

عادةً ما تبدأ بتشغيل قاعدة البيانات أولًا، ثم التطبيق، ثم طبقة الويب. ويؤدي تهيئة الطبقات بترتيب خاطئ إلى إفساد عملية النشر.

play واحد لكل طبقة

امنح كل طبقة play خاصًا بها ضمن ملف playbook واحد. تُنفَّذ الـ plays من الأعلى إلى الأسفل، ولذلك يحدد ترتيبها تسلسل النشر.

- hosts: db
  roles: [postgres]

- hosts: app
  roles: [backend]

- hosts: web
  roles: [nginx]

تطابق المجموعات الطبقات

تتوافق مجموعات inventory لديك، مثل db وapp وweb، مع المضيفين الذين يستهدفهم كل play. ويشكّل inventory العمود الفقري للتنسيق.

[db]
db01

[app]
app01
app02

[web]
web01
web02

مرّر البيانات بين الطبقات

تحتاج طبقة الويب غالبًا إلى عناوين IP لخوادم التطبيقات. اقرأها باستخدام hostvars والمجموعات لربط إحدى الطبقات بالأخرى.

backends: "{{ groups['app'] | map('extract', hostvars, 'ansible_host') | list }}"

انتظر حتى تصبح الطبقة جاهزة

قبل بدء التطبيق، تأكد من أن منفذ قاعدة البيانات مفتوح باستخدام wait_for. ويمنع ذلك التقدم قبل جاهزية خدمة بطيئة.

- ansible.builtin.wait_for:
    host: db01
    port: 5432
    timeout: 60

شغّل عمليات الترحيل مرةً واحدةً

يجب تنفيذ تغييرات مخطط قاعدة البيانات مرةً واحدةً فقط. اجمع بين run_once ومضيف مفوَّض إليه لكي تُجري عُقدة تطبيق واحدة ترحيل قاعدة البيانات المشتركة.

- ansible.builtin.command: ./migrate.sh
  run_once: true
  delegate_to: app01

اعبر الطبقات باستخدام delegate_to

يمكن لـ play التطبيق الوصول إلى طبقة الويب من خلال تفويض مهمة إلى مضيف ويب. ويمكن لملف playbook واحد تنسيق كل طبقة.

وسم الطبقات لتشغيلات محددة

أضف وسومًا مثل db وapp وweb إلى الـ plays، حتى تتمكن من إعادة نشر طبقة واحدة باستخدام --tags عند تغيّر طبقة واحدة فقط.

- hosts: web
  tags: web
  roles: [nginx]

أوقف العملية سريعًا عند الفشل

اضبط any_errors_fatal بحيث يؤدي الفشل في طبقة db إلى إيقاف التشغيل بالكامل قبل نشر طبقة app فوق طبقة معطّلة.

- hosts: db
  any_errors_fatal: true
  roles: [postgres]

المكدس بأكمله في ملف واحد

يصبح ملف playbook متعدد الـ plays بمثابة وصفة النشر: كل طبقة بالترتيب، مع توثيق الروابط بين الطبقات في مكان واحد.

اختبار سريع

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

مراجعة

نسّق الطبقات باستخدام play واحد لكل طبقة وبترتيب النشر، واربط بينها عبر المجموعات وhostvars وwait_for والتفويض. ✅

الأسئلة الشائعة

هل درس «تنسيق طبقات الويب والتطبيق وقاعدة البيانات» مجاني؟

نعم — نص درس «تنسيق طبقات الويب والتطبيق وقاعدة البيانات» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Ansible Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Ansible Academy 4 دروس في المجموع.

ماذا ستتعلم في «تنسيق طبقات الويب والتطبيق وقاعدة البيانات»؟

رتّب عملية نشر متعددة الطبقات تتمرن على Ansible Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Ansible Academy؟

لا تُشترط خبرة سابقة. Ansible Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.

كم من الوقت يستغرق درس «تنسيق طبقات الويب والتطبيق وقاعدة البيانات»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Ansible Academy هذا؟

نعم. كل درس في Ansible Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. أتمتة أجهزة الشبكة باستخدام cli_command
  2. delegate_to وrun_once للتنسيق
  3. تنسيق طبقات الويب والتطبيق وقاعدة البيانات
  4. إخراج العقد من Load Balancer ثم إعادة تفعيلها
← العودة إلى Ansible Academy