آسان بيان: ماليڪيول توهان جي بيان ڪيل پليٽ فارم تي هڪ مثال ٺاهي ٿو (ڪلائوڊ، ورچوئل مشين، ڪنٽينر؛ وڌيڪ تفصيل لاءِ، سيڪشن ڏسو ڊرائيور)، ان تي توهان جو ڪردار هلندو آهي، پوء ٽيسٽ هلندو آهي ۽ مثال کي حذف ڪري ٿو. جيڪڏهن هڪ قدم ۾ ناڪامي آهي، ماليڪيول توهان کي ان بابت اطلاع ڏيندو.
هاڻي وڌيڪ.
نظريي جو ھڪڙو
اچو ته ماليڪيول جي ٻن اهم ادارن تي غور ڪريون: منظرنامو ۽ ڊرائيور.
مناظر
اسڪرپٽ ۾ وضاحت آهي ته ڇا، ڪٿي، ڪيئن ۽ ڪهڙي ترتيب ۾ ڪيو ويندو. ھڪڙي ڪردار ۾ ڪيترائي اسڪرپٽ ٿي سگھن ٿا، ۽ ھر ھڪڙي ھڪڙي ڊاريڪٽري آھي رستي ۾ <role>/molecule/<scenario>، جنهن ۾ ٽيسٽ لاءِ گهربل عملن جا تفصيل شامل آهن. اتي هڪ اسڪرپٽ هجڻ گهرجي default, جيڪو خودڪار طور تي ٺاھيو ويندو جيڪڏھن توھان ڪردار کي شروع ڪريو Molecule استعمال ڪندي. ھيٺ ڏنل لکتن جا نالا توھان جي صوابديد تي آھن.
اسڪرپٽ ۾ جانچ جي عملن جي تسلسل کي سڏيو ويندو آهي ميٽرڪس، ۽ ڊفالٽ طور اهو هن طرح آهي:
(قدم نشان لڳل ?, ڊفالٽ طور ڇڏيا ويا آهن جيڪڏهن صارف طرفان وضاحت نه ڪئي وئي آهي)
lint - هلندڙ ليٽر. ڊفالٽ طور yamllint и flake8,
destroy - ماليڪيول جي آخري لانچ کان مثالن کي ختم ڪرڻ (جيڪڏهن ڪو به رهي)،
dependency؟ - آزمائشي ڪردار جي قابل انحصار انحصار کي نصب ڪرڻ،
syntax - استعمال ڪندي ڪردار نحو چيڪ ڪرڻ ansible-playbook --syntax-check,
create - مثال ٺاهڻ،
prepare؟ - مثال تيار ڪرڻ؛ مثال طور چيڪ ڪرڻ / انسٽال ڪرڻ python2
converge - آزمائشي راند بڪ لانچ ڪرڻ،
idempotence - Idempotency ٽيسٽ لاءِ راند جو ڪتاب ٻيهر هلايو،
side_effect؟ - ڪارناما سڌو سنئون ڪردار سان لاڳاپيل نه آهن، پر ٽيسٽ لاء ضروري آهن،
verify - استعمال ڪندي نتيجن واري ترتيب جي هلندڙ ٽيسٽ testinfra(ڊفالٽ) /goss/inspec,
اڪثر ڪيسن ۾، ٽيمپليٽ فائلون آهن create.yml и destroy.yml اسڪرپٽ فولڊر ۾، جيڪو بيان ڪري ٿو مثال جي تخليق ۽ حذف ڪرڻ، ترتيب سان.
استثنا Docker ۽ Vagrant آهن، ڇاڪاڻ ته انهن جي ماڊلز سان ڳالهه ٻولهه مٿين فائلن جي بغير ٿي سگهي ٿي.
اهو نمايان ڪرڻ جي قابل آهي Delegated ڊرائيور، ڇاڪاڻ ته جيڪڏهن اهو استعمال ڪيو ويندو آهي، مثال جي ترتيب سان صرف ڪم مثال جي ٺاھڻ ۽ فائلن کي ختم ڪرڻ ۾ بيان ڪيو ويو آهي؛ باقي انجنيئر طرفان بيان ڪيو وڃي.
ايندڙ قدم هڪ نئين ڪردار کي شروع ڪرڻ آهي.
نئين ڪردار جي شروعات، گڏوگڏ هڪ نئين رسم الخط، ڪمانڊ استعمال ڪندي ڪيو ويندو آهي molecule init <params>:
> molecule init role -r nginx
--> Initializing new role nginx...
Initialized role in <path>/nginx successfully.
> cd nginx
> tree -L 1
.
├── README.md
├── defaults
├── handlers
├── meta
├── molecule
├── tasks
└── vars
6 directories, 1 file
نتيجو هڪ عام جوابي ڪردار آهي. ان کان علاوه، ماليڪيول CLI سان گڏ سڀئي تعامل رول روٽ مان ٺهيل آهن.
اچو ته ڏسو ته رول ڊاريڪٽري ۾ ڇا آهي:
> tree molecule/default/
molecule/default/
├── Dockerfile.j2 # Jinja-шаблон для Dockerfile
├── INSTALL.rst. # Немного информации об установке зависимостей сценария
├── molecule.yml # Файл конфигурации
├── playbook.yml # Плейбук запуска роли
└── tests # Директория с тестами стадии verify
└── test_default.py
1 directory, 6 files
اچو ته config تي نظر molecule/default/molecule.yml (اسان صرف ڊاکر تصوير کي تبديل ڪنداسين):
مثالن جي تشڪيل کي بيان ڪري ٿو.
ڊاڪر جي صورت ۾ ڊرائيور جي حيثيت ۾، ماليڪيول هن حصي تي ٻيهر ورجائي ٿو، ۽ فهرست جو هر عنصر موجود آهي Dockerfile.j2 هڪ variable طور item.
جنهن ۾ ڊرائيور جي صورت ۾ create.yml и destroy.yml، سيڪشن انهن ۾ موجود آهي جيئن molecule_yml.platforms، ۽ ان تي ورجائي اڳ ۾ ئي بيان ڪيل آهن انهن فائلن ۾.
جيئن ته ماليڪيول جوابي ماڊلز کي مثالي انتظام فراهم ڪري ٿو، توهان کي اتي ممڪن سيٽنگن جي فهرست ڳولڻ گهرجي. Docker لاء، مثال طور، ماڊل استعمال ڪيو ويندو آهي docker_container_module. ڪهڙا ماڊل استعمال ڪيا ويا آهن ٻين ڊرائيورن ۾ ڳولي سگهجن ٿا دستاويز.
توھان پڻ ڳولي سگھوٿا مختلف ڊرائيور استعمال ڪرڻ جا مثال پاڻ ماليڪيول جي ٽيسٽن ۾.
اچو ته هتي تبديل ڪريون سينٽ: 7 تي Ubuntu.
روزي ڏيندڙ
"فراهم ڪندڙ" اهو ادارو آهي جيڪو مثالن کي منظم ڪري ٿو. ماليڪيول جي صورت ۾، اهو قابل قبول آهي؛ ٻين لاءِ سپورٽ منصوبابندي نه ڪئي وئي آهي، تنهنڪري هن حصي کي، رزرويشن سان، هڪ وڌايل جوابي ترتيب سڏيو وڃي ٿو.
هتي تمام گهڻو آهي توهان هتي اشارو ڪري سگهو ٿا، پر مان مکيه نقطي کي اجاگر ڪندس، منهنجي راء ۾:
راند جا ڪتاب: توهان وضاحت ڪري سگھو ٿا ته ڪهڙن پلے بڪ کي خاص مرحلن تي استعمال ڪيو وڃي.
اسڪرپٽ جي تسلسل جو عنوان ۽ وضاحت.
توھان تبديل ڪري سگھو ٿا ڊفالٽ ايڪشن ميٽرڪس ڪمانڊ کي شامل ڪرڻ سان <command>_sequence ۽ ان جي قيمت جي طور تي، اسان کي گهربل قدمن جي فهرست جي وضاحت ڪندي.
اچو ته چئو ته اسان عملن جي ترتيب کي تبديل ڪرڻ چاهيون ٿا جڏهن پلے بڪ رن ڪمانڊ هلائي رهيا آهيو: molecule converge
اسان جو سادو ڪردار بغير مسئلن جي آزمائشي.
اهو ياد رکڻ جي قابل آهي ته جيڪڏهن آپريشن دوران مسئلا پيدا ٿئي ٿي molecule test، پوء جيڪڏھن توھان معياري ترتيب کي تبديل نه ڪيو، Molecule مثال کي ختم ڪري ڇڏيندو.
هيٺيون حڪم ڊيبگنگ لاءِ ڪارآمد آهن:
> molecule --debug <command> # debug info. При обычном запуске Молекула скрывает логи.
> molecule converge # Оставляет инстанс после прогона тестируемой роли.
> molecule login # Зайти в созданный инстанс.
> molecule --help # Полный список команд.
جئين توهان ڏسي سگهو ٿا، ماليڪيول تمام پيچيده نه آهي، ۽ جڏهن توهان جي پنهنجي ٽيمپليٽس کي استعمال ڪندي، توهان مثالن ٺاهڻ ۽ حذف ڪرڻ لاءِ پلے بڪ ۾ متغيرن کي ايڊٽ ڪرڻ لاءِ نئين اسڪرپٽ جي ترتيب کي گهٽائي سگهو ٿا. انو بيشمار طور تي CI سسٽم سان ضم ٿي ٿو، جيڪو توهان کي ترقي جي رفتار کي وڌائڻ جي اجازت ڏئي ٿو پلے بڪ جي دستيابي جاچ لاءِ وقت گھٽائي.
توهان جي توجه لاء مهرباني. جيڪڏهن توهان کي جوابي ڪردار جي جانچ ڪرڻ جو تجربو آهي، ۽ اهو ماليڪيول سان لاڳاپيل ناهي، اسان کي تبصرن ۾ ان بابت ٻڌايو!