سب سے زیادہ مقبول میں سے ایک بن گیا . کے بعد 2015 میں نمبر ہزاروں سے تجاوز کر گیا اور Ansible شاید سب سے زیادہ استعمال ہونے والا تعیناتی اور آرکیسٹریشن سسٹم بن گیا۔ اس کی ایپلی کیشنز کی وسیع رینج بہت متاثر کن ہے۔
دور دراز میزبانوں کے لئے SSH کنکشن پر جوابدہ کام کرتا ہے۔ یہ ایک SSH سیشن کھولتا ہے، لاگ ان ہوتا ہے، نیٹ ورک پر Python کوڈ کو کاپی کرتا ہے اور اسے ایک علیحدہ عارضی فائل میں لکھتا ہے۔ اس کے بعد، یہ اس فائل کو ریموٹ مشین پر چلاتا ہے۔ کارروائیوں کا یہ پورا سلسلہ کافی طویل اور تکلیف دہ ہے، اس لیے اسے بہتر بنانے کے مختلف طریقے ہیں۔
ان طریقوں میں سے ایک ہے۔ جو آپ کو ہر بار نیا سیشن کھولنے کے بجائے ہدایات پر عمل کرنے کے لیے ایک SSH سیشن استعمال کرنے کی اجازت دیتا ہے، جس سے ہمارا کافی وقت بچ سکتا ہے۔ (صرف آف کرنا یاد رکھیں requiretty آپ میں sudo کی ترتیب /etc/sudoers ریموٹ مشین پر فائل)
Ansible کو اوور کلاک کرنے کا ایک نیا طریقہ python لائبریری کہلاتا ہے۔ . اگر کسی نے اس کے بارے میں نہیں سنا ہے، تو میں مختصراً اس کی فعالیت کو بیان کروں گا۔ یہ ریموٹ مشین پر ازگر کوڈ کے تیزی سے عمل درآمد کی اجازت دیتا ہے، اور جوابی استعمال کی صرف ایک مثال ہے۔ Mitogen ریموٹ مشین پر UNIX پائپ کا استعمال کرتا ہے اور zlib کے ساتھ کمپریسڈ اور اچار کے ساتھ سیریلائزڈ ازگر کوڈ منتقل کرتا ہے۔ اس سے اسے تیزی سے مکمل کرنے میں مدد ملتی ہے اور ٹریفک کی بچت ہوتی ہے۔ اگر آپ مزید تفصیلی وضاحت میں دلچسپی رکھتے ہیں، تو اس کے بارے میں صفحہ پر پڑھنا بہتر ہے۔ . لیکن آج ہم صرف اس بات پر توجہ مرکوز کریں گے کہ لائبریری Ansible کے ساتھ کیسے کام کرتی ہے۔
Mitogen مخصوص حالات میں آپ کے جوابی کوڈ کو کئی بار تیز کر سکتا ہے اور ٹریفک کی کھپت کو نمایاں طور پر کم کر سکتا ہے۔ آئیے سب سے زیادہ مقبول استعمال کے معاملات کو دیکھیں اور دیکھیں کہ یہ ہماری کتنی مدد کرتا ہے۔
میں Ansible کا سب سے زیادہ اس لیے استعمال کرتا ہوں: ریموٹ مشین پر کنفیگریشن فائلیں بنانا، پیکجز انسٹال کرنا، فائلوں کو ریموٹ مشین میں اور اس سے کاپی کرنا۔ شاید آپ کے پاس دوسری مثالیں ہیں - تبصرے میں لکھیں۔
ہم چلتے ہیں!
Ansible کے لیے Mitogen کنفیگریشن بہت آسان ہے:
Mitogen لائبریری انسٹال کریں:
pip install mitogenاب دو مساوی طریقے ہیں - یا تو ansible.cfg کنفیگریشن فائل میں آپشنز کو کنفیگر کریں، یا ضروری ماحولیاتی متغیرات سیٹ کریں۔
آئیے فرض کریں کہ نصب شدہ Mitogen کا راستہ ہوگا۔ /usr/lib/python2.7/site-packages/ansible_mitogen/plugins/strategy. پھر:
export ANSIBLE_STRATEGY_PLUGINS=/usr/lib/python2.7/site-packages/ansible_mitogen/plugins/strategy
export ANSIBLE_STRATEGY=mitogen_linearیا
[defaults]
strategy = mitogen_linear
strategy_plugins = /usr/lib/python2.7/site-packages/ansible_mitogen/plugins/strategyآئیے virtualenv میں Ansible کو Mitogen کے ساتھ اور اس کے بغیر انسٹال کریں:
virtualenv mitogen_ansible
./mitogen_ansible/bin/pip install ansible==2.7.10 mitogen
virtualenv pure_ansible
./pure_ansible/bin/pip install ansible==2.7.10براہ کرم نوٹ کریں کہ Mitogen 0.2.7 Ansible 2.8 کے ساتھ کام نہیں کرتا ہے (مئی 2019 تک)
القاب بنانا:
alias pure-ansible-playbook='$(pwd)/pure_ansible/bin/ansible-playbook'
alias mitogen-ansible-playbook='ANSIBLE_STRATEGY_PLUGINS=$(pwd)/mitogen_ansible/lib/python3.7/site-packages/ansible_mitogen/plugins/strategy ANSIBLE_STRATEGY=mitogen_linear $(pwd)/mitogen_ansible/bin/ansible-playbook'اب آئیے ایک پلے بک چلانے کی کوشش کریں جو ریموٹ مشین پر فائلیں بناتی ہے۔
---
- hosts: all
gather_facts: false
tasks:
- name: Create files with copy content module
copy:
content: |
test file {{ item }}
dest: ~/file_{{ item }}
with_sequence: start=1 end={{ n }}اور آئیے اسے 10 فائلیں بنانے کے لیے Mitogen کے ساتھ اور اس کے بغیر چلائیں۔
time mitogen-ansible-playbook file_creation.yml -i hosts -e n=10 &>/dev/null
real 0m2.603s
user 0m1.152s
sys 0m0.096s
time pure-ansible-playbook file_creation.yml -i hosts -e n=10 &>/dev/null
real 0m5.908s
user 0m1.745s
sys 0m0.643sہم 2 گنا بہتری دیکھتے ہیں۔ آئیے 20، 30، ...، 100 فائلوں کو چیک کریں:
time pure-ansible-playbook file_creation.yml -i hosts -e n=100 &>/dev/null
real 0m51.775s
user 0m8.039s
sys 0m6.305s
time mitogen-ansible-playbook file_creation.yml -i hosts -e n=100 &>/dev/null
real 0m4.331s
user 0m1.903s
sys 0m0.197sنتیجے کے طور پر، ہم نے 10 گنا سے زیادہ تیزی سے عملدرآمد کو تیز کیا!
اب آئیے مختلف منظرنامے آزمائیں اور دیکھیں کہ ہر چیز ہمارے لیے کتنی تیزی سے کام کرتی ہے:
مقامی سے ریموٹ ہوسٹ میں فائلوں کو کاپی کرنے کے لیے اسکرپٹ (ماڈیول کے ساتھ
copy):
کے ساتھ ریموٹ ہوسٹ پر فائلیں بنانے کے لیے اسکرپٹ
copyماڈیول:
ریموٹ ہوسٹ سے مقامی میں فائلوں کو ڈاؤن لوڈ کرنے کا منظر:
آئیے کئی (3) ریموٹ مشینوں کے ساتھ ایک منظرنامہ آزمائیں، مثال کے طور پر فائلوں کو ریموٹ ہوسٹ میں کاپی کرنے کا منظر:
جیسا کہ آپ دیکھ سکتے ہیں، Mitogen ان حالات میں ہمارا وقت اور ٹریفک دونوں بچاتا ہے۔ لیکن اگر رکاوٹ جواب میں نہیں ہے، لیکن مثال کے طور پر کسی ڈسک یا نیٹ ورک کے I/O میں، یا کہیں اور، تو یہ امید کرنا مشکل ہے کہ Mitogen ہماری مدد کرے گا۔
آئیے پائپ کا استعمال کرتے ہوئے yum/dnf اور python ماڈیولز کے ساتھ پیکیجز انسٹال کرنے کے ساتھ اسکرپٹ کو آزماتے ہیں۔ پیکجوں کو کیش کیا گیا تھا تاکہ نیٹ ورک کی خرابیوں پر انحصار نہ ہو:
---
- hosts: all
gather_facts: false
tasks:
- name: Install packages
become: true
package:
name:
- samba
- httpd
- nano
- ruby
state: present
- name: Install pip modules
become: true
pip:
name:
- pytest-split-tests
- bottle
- pep8
- flask
state: present
Mitogen کے ساتھ اسے 12 سیکنڈ لگے، جیسا کہ اس کے بغیر۔
صفحے پر آپ دوسرے بینچ مارکس اور ٹیسٹ دیکھ سکتے ہیں۔ جیسا کہ صفحہ بیان کرتا ہے:
Mitogen ماڈیول کو تیز نہیں کر سکتا جب یہ چل رہا ہو۔ یہ صرف اس ماڈیول پر عملدرآمد کو جتنی جلدی ممکن ہو سکے بنا سکتا ہے۔
اس لیے، یہ ضروری ہے کہ آپ اپنی تعیناتی میں رکاوٹوں کو تلاش کریں اور اگر وہ جوابدہ ہونے کی وجہ سے ہیں، تو Mitogen ان کو حل کرنے میں آپ کی مدد کرے گا اور آپ کی پلے بکس کے عمل کو نمایاں طور پر تیز کرے گا۔
ماخذ: www.habr.com
