وحدة template وملفات .j2
انشر ملفًا مُصيّرًا إلى مضيف
وحدة template وملفات .j2 درس مجاني في DevOps Bootcamp على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في DevOps Bootcamp، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة DevOps Bootcamp 4 دروس في المجموع.
الملفات الثابتة لا تكفي
تنقل وحدة copy الملف من دون تغيير. لكن ملفات الإعداد غالبًا ما تحتاج إلى منفذ أو اسم مضيف يختلف من خادم إلى آخر، لذلك لا تكفي النسخ الثابتة. 🤔
تعرّفوا إلى وحدة template
تعالج وحدة template الملف أولًا من خلال Jinja2، فتملأ المتغيرات، ثم تنسخ النتيجة إلى المضيف.
- name: Deploy config
template:
src: nginx.conf.j2
dest: /etc/nginx/nginx.confاصطلاح .j2
تنتهي ملفات مصدر القوالب بالامتداد .j2 للدلالة على أنها تستخدم Jinja2. هذا اصطلاح متّبع وليس قاعدة إلزامية، لكن الجميع يلتزم به.
src وdest
يشير src إلى ملف .j2 على عقدة التحكم، بينما يشير dest إلى المسار النهائي على المضيف المُدار.
template:
src: app.conf.j2
dest: /etc/app/app.confمكان وجود القوالب
يبحث Ansible افتراضيًا عن القوالب في مجلد templates بجوار playbook أو داخل role. لا حاجة إلى بادئة مسار.
templates/
nginx.conf.j2
site.ymlقالب بسيط
يبقى النص العادي داخل ملف .j2 كما هو، بينما تُستبدل العلامات {{ }}. هنا يتحول متغير المنفذ إلى رقم فعلي.
listen {{ http_port }};
server_name {{ domain }};تعيين أذونات الملف
مثل copy، تقبل template الخيارات owner وgroup وmode، لذلك يصل الملف المعالَج مع الملكية الصحيحة.
template:
src: app.conf.j2
dest: /etc/app.conf
mode: "0644"التحقق قبل الكتابة
يشغّل الخيار validate أمر فحص على الملف المعالَج قبل تثبيته، لذلك لا يتم نشر إعداد معطوب.
template:
src: sshd.j2
dest: /etc/ssh/sshd_config
validate: "sshd -t -f %s"القوالب Idempotent
إذا تطابقت النتيجة المعالَجة مع الملف الموجود على المضيف، فستبلغ template بالحالة ok ولن تغيّر شيئًا. يمكن تشغيلها بأمان مرارًا وتكرارًا.
إخطار Handler عند التغيير
استخدموا template مع notify حتى لا تُعاد خدمة التشغيل إلا عندما يتغير ملف الإعداد فعلًا. هذا تطابق مثالي.
template:
src: nginx.conf.j2
dest: /etc/nginx/nginx.conf
notify: restart nginxtemplate مقابل copy
استخدموا copy عندما يكون الملف نفسه في كل مكان، واستخدموا template عندما يجب أن يختلف أي جزء منه حسب المضيف.
تحقق سريع
تحتاجون إلى ملف إعداد يختلف منفذه من خادم إلى آخر. أي وحدة تناسب ذلك؟
مراجعة
تعرّفتم إلى وحدة template: فهي تعالج ملف .j2 باستخدام Jinja2، وتضعه في dest، وتعيّن أذوناته، وتحافظ على خاصية Idempotent. ✨
الأسئلة الشائعة
هل درس «وحدة template وملفات .j2» مجاني؟
نعم — نص درس «وحدة template وملفات .j2» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة DevOps Bootcamp، انتقل إلى CoddyKit PRO. تتضمن دورة DevOps Bootcamp 4 دروس في المجموع.
ماذا ستتعلم في «وحدة template وملفات .j2»؟
انشر ملفًا مُصيّرًا إلى مضيف تتمرن على DevOps Bootcamp مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ DevOps Bootcamp؟
لا تُشترط خبرة سابقة. DevOps Bootcamp على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.
كم من الوقت يستغرق درس «وحدة template وملفات .j2»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس DevOps Bootcamp هذا؟
نعم. كل درس في DevOps Bootcamp يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- وحدة template وملفات .j2
- المتغيرات والتعبيرات في Jinja2
- الحلقات وكتل if في القوالب
- المرشحات: default وjoin وupper