Ansible / المتقدم: التنسيق والمنصات والاختبارات والتشخيص / الدرس 14
تتبع التفويض وملكية سياق المضيف
افصل مضيف play ووجهة التنفيذ وسياق القيم وملكية الحقائق وتزامن المورد المشترك ونطاق run_once.
في هذه الصفحة
أهداف الدرس
- شرح قابلية التفويض ومصادر القيم.
- تمييز التنفيذ المفوض من ملكية الحقائق.
- تخطيط المفرد والمشترك ضمن الدفعات والاستراتيجيات.
قد يختلف مضيف play من التنفيذ
يغير delegate_to موقع القابل ويبقى الأصل بهوية التقرير. يتبع الاتصال والمفسر والامتياز والتقييم السياق الموثق فلا تعمم المراجع. استخدم hostvars الصريحة مع التوفر. لا تستخدم أفعال متحكم كـ debug اتصالاً فلا تفوضها ميكانيكياً؛ افحص قابلية الفعل. فهوية المضيف في التقرير لا تكفي لمعرفة أين استخدمت الصلاحيات فعلياً، ويجب توثيق هذا الفرق قبل تحليل نتيجة أو فتح وصول إضافي.
لا يقرر موضع التنفيذ ملكية الحقائق تلقائياً
يرتبط موضع جمع الحقيقة بمستلمها ولا يتطابقان؛ تضبط delegate_facts الإسناد المناسب. قد تظهر بيانات الآخر بالأول فتخطئ القوالب. لا تجعلها ناقلاً خفياً؛ عرف الملكية والحداثة والمستهلك خاصة بين plays، وعالج المخبأ والفشل والتجاوز. لا نجمع حقائق هنا. وعند استهلاك hostvars في play لاحقة، ينبغي معرفة المضيف الذي تنسب إليه الملاحظة ووقت جمعها، لا الاكتفاء بوجود مفتاح يحمل الاسم المتوقع.
يتبع run_once سياق التنفيذ بما فيه الدفعات
قد ينفذ مرة للدفعة فتكرره serial خلال play، وليس قفلاً للمشروع. قد يستخدم قيم المختار لا إجمالي الجميع. راجع free والملحق. حدد مرة لكل دفعة أو السكان أو مورد دائم ثم اختر ما يحققها. كما أن الاعتماد على قيم مضيف اختير لتنفيذ المهمة يختلف عن بناء إجمالي لجميع المضيفين، ويجب أن يكون هذا الاختيار جزءاً من العقد المراجع.
- name: Illustrate explicit helper execution
hosts: lab_nodes
gather_facts: false
serial: 2
tasks:
- name: Describe one batch through a fictional helper
ansible.builtin.command:
argv:
- /usr/bin/printf
- '%s\n'
- Synthetic helper message
delegate_to: lab_helper
run_once: true
changed_when: false
لا يتصل بالمساعد أو ينفذ الأمر؛ يوضح تفسير الدفعة ولا يثبت التحليل عدد التنفيذ.
تجميع قصد المضيف دون تعديل المشترك
يوضح قاموس تجميعاً مراجعاً وترتيباً ثابتاً دون ملف مشترك، لا تفويضاً أو hostvars أو قفلاً. اختبر لاحقاً الاستراتيجية والعدد والوجهة والأصل واللاحق. قيد الخرج والاعتماد بالموقع واختبر فشل المفوض مستقلاً؛ لا يثبت نجاح الأصل تطبيقاً واحداً للمشترك. وتحتاج مشكلة فشل المساعد إلى سياسة مستقلة، لأن توفر المضيف الأصلي لا يضمن قدرة الجهة المفوضة على تنفيذ الفعل المشترك أو استكماله مرة واحدة.
hosts = {'lab_b': {'port': 8202}, 'lab_a': {'port': 8201}}
aggregate = [f"{name}:{hosts[name]['port']}" for name in sorted(hosts)]
print(','.join(aggregate))
print('shared_write=not-performed')
lab_a:8201,lab_b:8202
shared_write=not-performed
ينسق القواميس فقط دون إعداد أو hostvars فعلي أو ضمان استبعاد متبادل.
الأخطاء الشائعة وإصلاحها
افتراض تسلسل المستدعين بـ delegate_to
- لماذا يحدث؟
- اختلط الموضع بالمزامنة.
- كيف تصلحه؟
- عرف الملكية والتزامن.
- كيف تتجنب تكراره؟
- اختبر عدة أصول لمفوض واحد.
اعتبار run_once مرة لكل النشر
- لماذا يحدث؟
- أُهمل السياق.
- كيف تصلحه؟
- حدد واختبر نطاق المرة.
- كيف تتجنب تكراره؟
- أدرج serial والاستراتيجية.
نسبة حقائق مفوضة للمضيف الخطأ
- لماذا يحدث؟
- اختلط التنفيذ والإسناد.
- كيف تصلحه؟
- راجع delegate_facts والمستهلك.
- كيف تتجنب تكراره؟
- احفظ أصل الحقيقة والهوية.
اختبر فهمك
1. لماذا تتسابق المفوضة مع اختلاف الأصول؟
اعرض الحل المشروح
قد تفعل كلها بالمورد نفسه بالتوازي؛ لا تنشئ الأسماء ملفات أو كائنات منفصلة. استخدم ملكية وتنسيقاً مختبراً.
2. ماذا تعني مرة قبل اختيار run_once؟
اعرض الحل المشروح
حدد الدفعة أو السكان أو الفعل الدائم وافحص الاستراتيجية وserial؛ استخدم حداً آخر عند غياب الضمان.
أهم ما تعلمته
- تتبع الهوية والموضع والبيانات منفصلة.
- عامل المشترك والمفرد بروتوكولات صريحة.