جزيء - اختبار الأدوار غير المرئية

يوم جيد. تم ذكر Ansible أكثر من مرة على Habré ، لكنني لم أجد مقالات عن اختبار أدواره باستخدام الجزيء ، ومع ذلك أجد أن هذا الإطار مناسب للغاية وأرغب في مشاركة هذا مع جمهور Habr.
ولكن أولا ، قليلا عن ما اعتدت من قبل.

في السابق ، لاختبار الأدوار الملموسة التي أقوم بإنشائها ، كنت أستخدمها بشكل واضح:

$ vagrant init debian/jessie64 $ vagrant up 

إنشاء أجهزة افتراضية ، وبعد ذلك كتبت الجرد وكتاب اللعب لإطلاق الدور ، حتى تعرفت على الجزيء في يوم من الأيام.

ما الذي يمكن أن يقدمه الجزيء؟


  1. تهيئة الدور الأولي
  2. سائق / مزود
  3. اختبارات العاطفة
  4. التحقق

تهيئة الدور الأولي


إذا تم تحديد دور جديد ، يقوم بإنشاء بنية نموذج للدور ansible

سائق / مزود


يسمح لنا Molecule باستخدام حاوية Docker أو آلة افتراضية كخنزير غينيا باستخدام Vagrant ، ويتم تحديد ذلك عن طريق تحديد برنامج التشغيل أثناء التهيئة ، أو في molecule.yml. بسبب إذا كان لا بد لي من اختبار أدوار تنظيم الحاويات ، فسيظل Vagrant هو المحرك المفضل بالنسبة لي. اختيار Vagrant كسائق يتيح لك أيضًا اختيار موفر.

التالية متوفرة:

  • Libvirt
  • يوازي
  • VirtualBox (افتراضي)
  • برنامج VMware Fusion

بعد ذلك ، سننظر في متغير Vagrant مع VirtualBox كموفر.

اختبارات العاطفة


حسب الويكي:
خاصية كائن أو عملية عند تطبيق العملية على الكائن مرة أخرى تعطي نفس النتيجة كما لو كانت واحدة.

فيما يتعلق بالأدوار غير المرئية ، عند إعادة تشغيل الدور ، يجب عدم إجراء أي تغييرات.

التحقق


من أجل التأكد من أن الدور قد عمل بشكل صحيح ، فإن عدم القيام بأي مهمة لا يكفي. بعد كل شيء ، تحتاج إلى التحقق من أن الخدمات قد بدأت ، والمنافذ مفتوحة ، إلخ.

الأطر التالية متاحة للتحقق:

  • جوس
  • Serverspec
  • Testinfra (افتراضي)

لقد اختبرت من قبل جوس و Testinfra. بنفسي ، اخترت Testinfra.

مثال للاستخدام:

 $ molecule init --role sample-role 

بعد تنفيذ هذا الأمر ، نحصل على دليل لعينات الأدوار بهيكل دور غير مرئي نموذجي وملفات yaml اللازمة:

 defaults handlers meta molecule.yml // -  molecule playbook.yml //      README.md tasks tests //    vars 

يمكنك البدء دون تحديد مفتاح التبديل --role ، في هذه الحالة ، سيتم إنشاء ملفات molecule.yml و playbook.yml في الدليل الحالي.

يحدث أنك تحتاج إلى التأكد من أن الدور يعمل على عدة توزيعات في هذه الحالة ، في molecyle.yml ، يجب عليك تحديد أسماء الصناديق المهجورة (في الأنظمة الأساسية):

 vagrant: platforms: - name: jessie64 box: debian/jessie64 - name: centos7 box: centos/7 

بعد ذلك ، أضف الإجراءات / المتغيرات الضرورية ، إلخ. في الدور ، وبعد ذلك نختبر على جميع المنصات المحددة:

 $ molecule test --platform all 

بعد هذا الجزيء:

  • إذا كانت هناك أجهزة افتراضية تم إنشاؤها بالفعل ، فستتوقف وستحذفها
  • سوف ترفع الأجهزة الافتراضية اللازمة
  • اختبار دورنا مع الوبر لينس
  • الوفاء بدورنا في الحاويات التي تم إنشاؤها حديثا
  • سوف اختبار ل idempotency
  • تشغيل اختبارات testinfra
  • سيحذف الأجهزة الافتراضية التي تم إنشاؤها

قد تحتاج إلى تغيير سلوك الجزيء عند إجراء اختبار ، على سبيل المثال ، لا تقم باختبار عدم وجود قوة ، ولهذا أضف ما يلي إلى molecule.yml:

 molecule: test: sequence: - destroy - syntax - create - converge - verify - destroy 

يمكنك أيضًا استدعاء كل خطوة من الخطوات المقابلة بشكل منفصل باستخدام الأمر المناسب ، على سبيل المثال:

 $ molecule create --platform all $ molecule syntax $ molecule create $ molecule converge $ molecule verify 

كخيار واحد ، لا تقم بحذف / إنشاء جهاز ظاهري جديد قبل كل التقارب.

يمكنك تحديد منصة معينة واختبارها بشكل منفصل:

 $ molecule create --platform jessie64 $ molecule syntax $ molecule create $ molecule converge $ molecule verify 

شكرا لاهتمامكم!

Source: https://habr.com/ru/post/ar437216/


All Articles