Ansible / المتقدم: التنسيق والمنصات والاختبارات والتشخيص / الدرس 16
تصميم عقود المنصة والامتياز
افصل متطلبات POSIX وWindows وأجهزة الشبكة وAPI مع اتصال وامتياز صريحين.
في هذه الصفحة
أهداف الدرس
- شرح متطلبات الوحدة والنقل حسب المنصة.
- تمييز هوية الدخول من become وطريقتها.
- التحقق من مصفوفة دعم دون اتصال بالمنصات.
لا تعني لغة كتاب واحدة بيئة هدف واحدة
تتشابه اللغة وتختلف الوحدة والنقل والمفسر والامتياز والدلالة. لا يتبادل مسار POSIX وخدمة Windows ومورد شبكة وAPI. اقرأ الدعم لا الاسم العام، وليتكيف الدور بواجهة مراجعة أو يرفض. لا يجعل غياب حقيقة أو وحدة بديلاً shell أوسع امتيازاً خفية. وقد يكون الرفض المبكر للتركيبة غير المدعومة أوضح وأقل خطراً من محاولة تكييفها بأمر عام لا يحفظ دلالة الوحدة أو حدودها.
يحدد موضع التنفيذ نطاق الاعتماد والاعتماد الأمني
تنفذ POSIX غالباً بمفسر هدف واتصال كـ SSH، وتستخدم Windows نقلها ووحداتها حسب الدعم، وتنفذ الشبكة كثيراً منطقها بالمتحكم وتصل للمنصة أو API. اجرد المكتبات والبيئة والاعتماد مستقلة. قد يختلف التفاعلي بالصدفة والبيئة والتوثيق والامتياز. لا نفتح نقلاً أو نهيئه. وينبغي أن يوضح الجرد التقني أين تحتاج المكتبة وأين يستخدم الاعتماد الأمني، لأن هذين الموضعين قد يختلفان عن اسم الجهاز الظاهر في play.
تصعيد الامتياز قدرة تنفيذ صريحة
تستخدم become آلية المنصة لهوية أخرى ولا يفعّلها become_user وحده. راجع الدخول والطريقة والهوية والسياسة. ليس الأعلى علاج مسار أو قيمة أو وحدة؛ ضيق النطاق ولا تخزن السر بالجرد والسجل. تختلف القيود والمؤقتات والانتقال فلا تعمم نجاح منصة. وقد تختلف البيئة الناتجة عن هوية الدخول التفاعلية، لذلك لا يثبت نجاح أمر يدوي أن السياق الذي ستنشئه الأتمتة يملك الاعتمادات والبيئة نفسها.
تمثيل قصد الامتياز دون ممارسته
يعلن المثال حساباً وعلم تصعيد لهدف افتراضي ويبقى غير قابل للتشغيل؛ لا يصرح النص الآمن بالمضيف المهيأ. برر الهوية واختبر المسموح والمرفوض بمؤقت. تختلف الوحدة عن الأمر؛ يثبت YAML البنية لا وجود الحساب أو الدعم أو الإذن. ويظل فحص العمليات المرفوضة ضرورياً أيضاً، حتى لا ينجح الاختبار المطلوب بعد منح الحساب صلاحيات أوسع بكثير مما يحتاجه العقد.
- name: Illustrate scoped privilege intent
hosts: lab_posix
gather_facts: false
tasks:
- name: Describe a fictional service identity
ansible.builtin.command:
argv:
- /usr/bin/printf
- '%s\n'
- Synthetic identity review
become: true
become_user: lab_service
changed_when: false
لم يحدث بحث حساب أو اتصال أو تصعيد أو أمر؛ الهوية والأمر بيانات تصميم.
اختبار مصفوفة دعم معلنة قبل الآثار
تكشف مصفوفة غير متصلة تركيبة غير مدعومة ولا تكتشف القدرة أو تثبت الإصدار. استمد الفعلية من المراجع واحفظ نسخها والمفسر وPowerShell دون تعميم دائم. ارفض غير المدعوم قبل الجزئي لا متأخراً وافصل التحقق من الأسرار والوصول. وتصبح نسخة المصفوفة جزءاً من دليل الإصدار، لأن دعم إصدار نظام أو مفسر قد ينتهي بينما تبقى ملفات playbook دون أي تعديل.
supported = {'posix': {'file', 'template'}, 'windows': {'win_file', 'win_template'}}
requested = ('windows', 'file')
print('synthetic_supported=' + str(requested[1] in supported[requested[0]]))
print('platform_probe=not-performed')
synthetic_supported=False
platform_probe=not-performed
الأسماء أوسمة نموذج لا محلل وحدة؛ يفحص الجدول ولا يستطلع طرفاً.
الأخطاء الشائعة وإصلاحها
افتراض تفعيل become_user التصعيد
- لماذا يحدث؟
- اختلطت الهوية والعلم.
- كيف تصلحه؟
- راجع العلم والطريقة والهوية والسياسة.
- كيف تتجنب تكراره؟
- اختبر كل منصة.
افتراض عمل وحدة POSIX بكل هدف
- لماذا يحدث؟
- اختلطت اللغة بالنقل.
- كيف تصلحه؟
- استخدم المدعوم أو ارفض.
- كيف تتجنب تكراره؟
- احفظ مصفوفات الدعم.
إخفاء عيب آخر بامتياز أعلى
- لماذا يحدث؟
- لم يشخص السبب الفعلي.
- كيف تصلحه؟
- حدد العملية قبل السلطة.
- كيف تتجنب تكراره؟
- اشترط تبرير التصعيد.
اختبر فهمك
1. لماذا تحتاج وحدة شبكة مكتبات المتحكم لا Python بالجهاز؟
اعرض الحل المشروح
قد ينفذ المنطق بالمتحكم ويتصل بالنقل أو API؛ يتبع الاعتماد التصميم فراجع المحدد لا افتراض POSIX.
2. ماذا يثبت اختبار منصة غير مدعومة؟
اعرض الحل المشروح
يرفض قبل الأثر ويوضح العقد دون سر؛ لا يعوض غياب الوحدة تلقائياً بـ shell أو إدارة عامة.
أهم ما تعلمته
- افصل المتحكم والهدف والنقل والوحدة والامتياز.
- ارفض غير المدعوم قبل الآثار.