
هذه هي النسخة النصية للأداء 2018-04-25 في مجموعة مستخدمي سانت بطرسبرغ لينكس . نموذج التعليمة البرمجية هنا: https://github.com/ultral/ansible-role-testing
أعتقد أنك تستخدم إدارة التكوين ، وليس باش . أي التكوين الخاص بك هو رمز. إذا قلنا أن البنية التحتية عبارة عن كود ، فيجب تطبيق نفس الفلسفة على إنشائها كما في تطوير البرمجيات. هل فكرت في هذا؟ كيف يمكنك أن تفعل ذلك؟ وغيرها؟
المتطلبات الأساسية
في هذه الحالة ، كان هناك العديد من تلك التمهيدية:
- العديد من الأدوار الغريبة.
- Hyper-V كمشرف أساسي.
- سحابة خاصة ذات إمكانيات محدودة لإنشاء أجهزة افتراضية أثناء التنقل.
- وكيل للوصول إلى الإنترنت.
- عدم القدرة على تشغيل اختبار الأدوار غير المرئية في عامل ميناء ، لأن الدور هو تكوين جهاز VM بأكمله ، بما في ذلك إعدادات الشبكة على سبيل المثال.
- الرغبة في استخدام سياسة المعالج الأخضر لمستودع بأدوار غير مرئية.
قبل أن نفعل ما نقوم به ، نقوم بمقارنة الحلول الحالية.
مشروع | اختبار المطبخ | جزيء | الخاصة |
---|
اللغة | روبي | الثعبان | باش / روبي |
المراقبون | 132 | 126 | 0 |
نجوم | 1413 | 1154 | 1 |
الشوك | 502 | 174 | 2 |
رخصة | اباتشي 2.0 | معهد ماساتشوستس للتكنولوجيا | أي |
يرتكب | 1929 | 1264 | 0 |
النشرات | 101 | 121 | 0 |
المساهمون | 109 | 82 | 5 |
قررنا عدم إعادة اختراع العجلة واتخاذ حل جاهز. يعرف فريق البنية التحتية لدينا روبي ، لذلك تم اختيار Test Kitchen & inspec
المطبخ- ci

الفكرة بسيطة قبيحة. نخلق جهازًا افتراضيًا جديدًا ، ونستخدم الدور ، ونجري اختبار الدخان.
سياسة البناء الخضراء

لكننا قررنا المضي قدمًا. استخدم ala github flow ، أي الأدوار في برنش الفردية وبعد مراجعة merjim في الماجستير. إذا كانت الاختبارات جيدة ، فنحن نعيد الأدوار إلى البنية التحتية.
الافتراضية المتداخلة
كما تتذكر ، كان لدينا قيود على إنشاء أجهزة افتراضية ، لذلك كان علينا اتخاذ قرار غير سارة في شكل ظاهرية متداخلة.

في البداية ، حاولنا Virtualbox x32 عدم تضمين الدعم المتداخل. تبين أن هذه ليست أفكارًا بسبب ثبات ذعر النواة. العامل الثاني المهم هو أننا نجلس على x86_64 ، لذلك استمر البحث (مرحبا libvirt) ، ولكن استقر على virtualbox كأكثر شيوعا على نظام التشغيل المدعوم.
الصعوبات
أثناء الإطلاق ، كان كل شيء جيدًا وكان لديه عدد من الصعوبات
تخطي إعدادات الخادم الوكيل من المضيف إلى ضيف الضيف
في بعض سيناريوهات الاختبار ، تم استخدام إعدادات الخادم الوكيل ، بينما تم استخدام وكيل شفاف على المضيف مع testkitchen ولم يقبل المكافئ غير المرئي المتغيرات الإضافية ذات القيم الفارغة.
الحل: مبتذل - إنشاء قالب ERB.
<%= ENV['http_proxy'].to_s.empty? ? 'http://proxy.example.com:3128' : ENV['http_proxy'] %>
إدارة إعدادات الشبكة من خلال ansible
في بعض الأدوار ، تم تكوين الشبكة ، في اختبارات بدا الأمر كما يلي:
- نحن تكوين الشبكة عن طريق نسخ الملف.
- تطبيق إعدادات الشبكة.
- كل شيء سيء.
الحل: إضافة واجهة إلى الجهاز الظاهري
إذا كانت مجموعة الاختبار تحتوي على "_" كل شيء يسقط
لا يمكن استخدام Virtualbox "_" في اسم الجهاز الظاهري. والجهاز الظاهري يستخدم اسم البرنامج النصي.
الحل: إعادة تسمية مجموعات الاختبار "vm_" => "vm-"
اختبار الحالات مع تثبيت Oracle دون "." في نهاية سقوط اسم الجهاز الظاهري
تم استخدام الدور في المبيعات الشرطية عندما قرروا تغطيتها بالاختبارات. عندما تقوم بتدويرها إلى جهاز VM معد ، فإنها تفي بالدور ، فهي تقع من خلال testkitchen.
تلميح قليلا
[root@vm-oracle vagrant]# getent ahosts vm-oracle 127.0.0.1 STREAM vm-oracle 127.0.0.1 DGRAM 127.0.0.1 RAW [root@vm-oracle vagrant]# getent ahosts vm-oracle. fe80::a00:27ff:febd:bd6a STREAM vm-oracle fe80::a00:27ff:febd:bd6a DGRAM fe80::a00:27ff:febd:bd6a RAW 10.0.2.15 STREAM 10.0.2.15 DGRAM 10.0.2.15 RAW [root@oracle vagrant]# getent ahosts oracle.example.com. 192.168.128.182 STREAM oracle.example.local 192.168.128.182 DGRAM 192.168.128.182 RAW
أي فكرة عما يجري؟
لقد كان سيناريو ممتعًا:
- قمنا بتمكين ربط IPv4 فقط في إعدادات مستمع أوراكل.
- يستخدم أوراكل FQDN.
- يحتوي linux على قاعدة خاصة "myhostname" لحل أسماء النطاقات ، وتم استخدامه بعد / etc / hosts & dns server.
- Vagrant يخلق VM والتحديثات
/etc/hosts
.
ساوضح قليلا:
ماذا يحدث في حالة vm-oracle ؟
- المتشرد يخلق آلة افتراضية.
- تحديثات غامضة
/etc/hosts
( vm-oracle x2) - مستمع أوراكل يستمع إلى IPv4.
- المستمعين أوراكل يحل اسم المجال أوراكل. & يحصل IPv6.
- فشل
ماذا يحدث في حالة vm-oracle. ؟
- المتشرد يخلق آلة افتراضية.
- تحديثات غامضة / الخ / المضيفين ( vm-oracle & vm-oracle. ).
- مستمع أوراكل يستمع إلى IPv4.
- المستمعين أوراكل يحل اسم المجال أوراكل. & يحصل IPv4
- حسنا
OOM يأتي لزيارتنا
قتل OOM الأجهزة الافتراضية بشكل عشوائي. أعطى Testkitchen في نفس الوقت كل أنواع الرسائل الغريبة في سجلاته.
الحل: زيادة مقدار الذاكرة.
يبني بطيئة
هذا المخطط بأكمله يعمل ببطء ، لعشرات الدقائق ، وأحيانا أكثر من ساعة.
الحلول:
- باكر . Preassemble صور الجهاز الظاهري.
- تشغيل حالات اختبار متعددة في نفس الوقت
الخاتمة
إذا قلنا أن البنية التحتية عبارة عن كود ، فيجب تطبيق نفس الفلسفة على إنشائها كما في تطوير البرمجيات. من ناحية ، حصلنا على حل عملي ، ولكن هناك بعض اللحظات غير السارة:
- ليست ودية ، كل شيء يبدو.
- مزيج من الياقوت والبيثون.
- لا توجد اختبارات وأدوار الدور.
- إنه يعمل ببطء.
- صعب ....
في الخرج ، يبدو الجزيء مع عامل الإرساء مثيرًا للاهتمام وأكثر محلية. نحن نفكر في ذلك.
المراجع