تحتوي هذه الحزمة على رمز لبرنامج مواصفات الوسيطة Ansible. جمهورها الرئيسي هم أنصار الوحدات النمطية التي ترغب في تقليل الازدواجية في وحداتهم من خلال إنشاء مواصفات الوسيطة مباشرة من وثائق مستخدم الوحدة النمطية.
يتم نشر مستخلص الوثائق على PYPI ويمكننا تثبيته باستخدام pip :
$ pip install ansible-argspec gen [base] # سيؤدي هذا إلى تثبيت ANSIBLE-base
$ pip install ansible-argspec gen [Ansible] # سيؤدي هذا إلى تثبيت ANSIBLE
$ pip install ansible-argspec gen # نحتاج إلى تثبيت Ansible أو
# ansible-base أنفسنا
إذا لم يفشل الأمر السابق ، فنحن على استعداد لبدء تحديث وحداتنا. عندما نستخدم المولد لأول مرة ، نحتاج إلى إجراء الخطوات الثلاث التالية:
# AUTOMATIC MODULE ARGUMENTS ، ولكن يمكن تغيير هذا باستخدام --marker سطر الأوامر.على سبيل المثال ، دعنا نفترض أن الأسطر القليلة الأولى من الوظيفة الرئيسية للوحدة لدينا تبدو هكذا قبل تشغيل المولد:
def main ():
# وسيطات الوحدة التلقائية
# وسيطات الوحدة التلقائية
الوحدة النمطية = Ansiblemodule (
إذا قمنا بتشغيل المولد الآن في وضع الفحص مع تشغيل الاختلاف ، فسوف نعود إلى شيء مثل هذا:
$ ansible-argspec-gen-diff-dry-run plugins/route.py
--- ../ansible_collections/steampunk/nginx_unit/plugins/modules/route.py.old
+++ ../ansible_collections/steampunk/nginx_unit/plugins/modules/route.py.new
-359،6 +359،52@
def main ():
# وسيطات الوحدة التلقائية
+ presument_spec = {
+ "Global": {"Default": false ، "type": "bool"} ،
+ "الاسم": {"type": "str"} ،
+ "Socket": {"type": "path"} ،
+ "الدولة": {
+ "خيارات": ["الحاضر" ، "غائب"] ،
+ "افتراضي": "الحاضر" ،
+ "النوع": "str" ،
+} ،
+}
+ مطلوب _if = [("Global" ، false ، ("name" ،)) ، ("State" ، "Present" ، ("Steps" ،))]
# وسيطات الوحدة التلقائية
الوحدة النمطية = Ansiblemodule (
بمجرد أن نكون سعداء مع التغييرات المقترحة ، يمكننا كتابتها إلى الملف:
$ ansible-argspec gen plugins/modules/route.py
إذا قمنا بتحديث وثائق الوحدة النمطية ، فيمكننا ببساطة إعادة تشغيل الأمر السابق والمولد سيأخذ أو تحديث المواصفات. لاحظ أن المولد سيقوم بالكتابة فوق المحتوى بين العلامات ، لذا تأكد من عدم تعديل هذا الجزء من الملف يدويًا أو ستفقد التغييرات في التحديث التالي.
يجب أن يعمل توليد مواصفات الوسيطة لفئة AnsibleModule على أي وحدة تحتوي على وثائق. لكن الحصول على المولد لإنتاج معلمات أخرى مثل المتطلبات الشرطية يتطلب القليل من العمل.
من أجل إنشاء مواصفات required_if ، تحتاج معلماتنا إلى الحصول على جملة في وصفها تناسب القالب المطلوب إذا كان i ({param_name}) c ({param_value}) . المثال التالي:
خيارات:
اسم:
وصف:
- اسم المورد. مطلوب إذا كنت (الدولة) هي C (حاضر).
سوف تنتج المواصفات التالية:
مطلوب _if = [("الحالة" ، "الحاضر" ، ("الاسم" ،))]
شيء آخر يعرفه المولد كيفية إنتاجه هو مواصفات mutually_exclusive . يكون النمط الذي يبحث عنه المولد في هذه الحالة حصريًا بشكل متبادل مع I ({param1}) ، i ({param2}) ، و i ({param3}) ، حيث لا يكون عدد المعلمات التي يمكننا تحديدها محدودًا. مثال:
خيارات:
العمليات:
وصف:
- حدود العملية الديناميكية.
- متبادل بشكل متبادل مع i (no_processes).
No_processes:
وصف:
- حد العملية الثابتة.
- متبادل بشكل متبادل مع I (العمليات).
هذا سوف ينتج:
matherly_exclusive = [("no_processes" ، "العمليات")]
إن الحصول على بيئة التطوير والتشغيل أمر بسيط نسبيًا إذا تم تثبيت pipenv :
$ pipenv تحديث
لاختبار المستخرج ، يمكننا تشغيل:
$ pipenv تشغيل ANSIBLE-ARGSPEC-gen