الحالة المطلوبة، لا البرامج النصية خطوة بخطوة
لماذا يتفوق الأسلوب التصريحي على الإجرائي
الحالة المطلوبة، لا البرامج النصية خطوة بخطوة درس مجاني في Ansible Academy على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Ansible Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Ansible Academy 4 دروس في المجموع.
صِف النهاية، لا الخطوات
Ansible تصريحي: تصف الحالة النهائية التي تريدها، ويحدد Ansible الخطوات اللازمة للوصول إليها بدءًا من حالة المضيف الحالية.
الطريقة الإجرائية
يسرد البرنامج النصي الإجرائي أوامر محددة بالترتيب. وهو يفترض حالة بداية معينة، لذلك يفشل إذا كان المضيف قد أُعد جزئيًا بالفعل.
apt-get update
apt-get install -y nginx
systemctl start nginxالطريقة التصريحية
تحدد المهمة التصريحية الهدف فقط: يجب أن يكون nginx مثبتًا ويعمل. يفحص Ansible الواقع ولا يتصرف إلا عند الحاجة.
ansible.builtin.package:
name: nginx
state: presentيحدد state الهدف
يُعد المفتاح state المكان الذي تعلن فيه نيتك. يحدد كل من present وstarted وabsent حالة نهائية مرغوبة، وليس إجراءً مطلوبًا تنفيذه.
ansible.builtin.service:
name: nginx
state: startedيقارن Ansible أولًا
قبل تغيير أي شيء، يقارن أحد الوحدات الحالة الحالية بالحالة التي أعلنتها. وإذا كانتا متطابقتين بالفعل، فلن يفعل شيئًا على الإطلاق.
هذا هو التقارب
يدفع كل تشغيل المضيف نحو الحالة التي أعلنتم عنها. هذا هو التقارب: فبغضّ النظر عن نقطة البداية، ينتهي المضيف في المكان نفسه.
يقل اعتمادكم على الترتيب
بما أن المهام تعلن أهدافًا، فإن إعادة تشغيل play غير مكتمل تنجز الباقي. لا يتعين عليكم تتبّع الخطوة التي فشلت في المرة السابقة.
آمن لإعادة التشغيل
المهام التصريحية آمنة عند إعادة تشغيلها. وتبقى المضيفات المطابقة مسبقًا دون تغيير، وهذا هو الأساس الكامل لـ idempotency.
ما يلزم تذكّره أقل
لن تعودوا إلى كتابة فحوصات «إذا كان مثبتًا فتخطّه» يدويًا. يتولى module هذا المنطق، ولذلك يبقى playbook الخاص بكم قصيرًا وسهل القراءة.
يُعدّ playbook مصدرًا للحقيقة
يبدو playbook التصريحي كأنه توثيق لـالحالة المطلوبة للخادم: ما الحزم والخدمات والملفات التي ينبغي أن تكون موجودة عليه.
- name: Web server desired state
hosts: web
tasks:
- ansible.builtin.package:
name: nginx
state: presentلا تزال بعض المهام إجرائية
تُعدّ مهام command وshell الخام إجرائية؛ فهي تعمل في كل مرة. فضّلوا modules المعتمدة على الحالة حتى يحافظ Ansible على نهجه التصريحي.
اختبار سريع
تكتبون مهمة تنص على أن nginx يجب أن يكون موجودًا، ثم تشغّلون playbook على مضيف يحتوي nginx مسبقًا.
خلاصة
تعلنون عن الحالة المطلوبة ويقرّب Ansible المضيف منها، ولا يتدخل إلا عندما يختلف الواقع عنها. هذه السلامة هي idempotency. 🎯
الأسئلة الشائعة
هل درس «الحالة المطلوبة، لا البرامج النصية خطوة بخطوة» مجاني؟
نعم — نص درس «الحالة المطلوبة، لا البرامج النصية خطوة بخطوة» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Ansible Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Ansible Academy 4 دروس في المجموع.
ماذا ستتعلم في «الحالة المطلوبة، لا البرامج النصية خطوة بخطوة»؟
لماذا يتفوق الأسلوب التصريحي على الإجرائي تتمرن على Ansible Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Ansible Academy؟
لا تُشترط خبرة سابقة. Ansible Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.
كم من الوقت يستغرق درس «الحالة المطلوبة، لا البرامج النصية خطوة بخطوة»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Ansible Academy هذا؟
نعم. كل درس في Ansible Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- الحالة المطلوبة، لا البرامج النصية خطوة بخطوة
- قراءة changed مقابل ok في المخرجات
- لماذا يكسر command قابلية التكرار
- وضع الفحص: تشغيل تجريبي باستخدام --check