دور دراز میزبانوں کے لئے SSH کنکشن پر جوابدہ کام کرتا ہے۔ یہ ایک SSH سیشن کھولتا ہے، لاگ ان ہوتا ہے، نیٹ ورک پر Python کوڈ کو کاپی کرتا ہے اور اسے ایک علیحدہ عارضی فائل میں لکھتا ہے۔ اس کے بعد، یہ اس فائل کو ریموٹ مشین پر چلاتا ہے۔ کارروائیوں کا یہ پورا سلسلہ کافی طویل اور تکلیف دہ ہے، اس لیے اسے بہتر بنانے کے مختلف طریقے ہیں۔
ان طریقوں میں سے ایک ہے۔ requiretty
آپ میں sudo کی ترتیب /etc/sudoers
ریموٹ مشین پر فائل)
Ansible کو اوور کلاک کرنے کا ایک نیا طریقہ python لائبریری کہلاتا ہے۔
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