u bë një nga më të njohurat . Pasi që në vitin 2015, numri ka tejkaluar mijëra dhe Ansible ka ndoshta qenë sistemi më i përdorur për shpërndarje dhe orkestrim. Fushat e tij të gjera të aplikimit janë shumë impresive.
Ansible punon përmes lidhjeve SSH me hostet e largët. Ai hap një sesion SSH, bën login, kopjon kodin në Python përmes rrjetit dhe e regjistron atë në një skedar kalimtar të veçantë. Pas kësaj, ai ekzekuton këtë skedar në makinën e largët. E gjithë kjo sekuencë operacionesh është mjaft e gjatë dhe e lodhshme, prandaj ekzistojnë mënyra të ndryshme për ta optimizuar.
Një nga këto metoda është e cila lejon përdorimin e një sesioni SSH për ekzekutimin e instrukcioneve, në vend që të hapim çdo herë një sesion të ri, gjë që mund të na kursejë shumë kohë. (Vetëm mos harroni të shkoni në requiretty në konfigurimin e sudo në /etc/sudoers skedarin tuaj në makinën e largët)
NjĂ« nga mĂ«nyrat e reja pĂ«r 'tĂ« acceleruar' Ansible Ă«shtĂ« biblioteka python me emrin . nĂ«se dikush nuk e ka dĂ«gjuar pĂ«r tĂ« â do ta pĂ«rshkruaj shkurtimisht funksionalitetin e saj. Ajo lejon ekzekutimin e shpejtĂ« tĂ« kodit python nĂ« makinĂ«n e largĂ«t dhe Ansible Ă«shtĂ« vetĂ«m njĂ« nga shembujt e pĂ«rdorimit. Mitogen pĂ«rdor tubacionin UNIX nĂ« makinĂ«n e largĂ«t dhe dĂ«rgon kodin python tĂ« kompresuar me zlib dhe tĂ« serizuar me pickle. Kjo ndihmon nĂ« ekzekutimin e tij mĂ« shpejt dhe kursen trafik. NĂ«se jeni tĂ« interesuar pĂ«r njĂ« shpjegim mĂ« tĂ« detajuar, Ă«shtĂ« mĂ« mirĂ« tĂ« lexoni rreth tij nĂ« faqen . Por sot do tĂ« fokusohemi vetĂ«m nĂ« punĂ«n e bibliotekĂ«s me Ansible.
Mitogen nën rrethana të caktuara mund të përshpejtojë kodin tuaj Ansible disa herë dhe të reduktojë ndjeshëm konsumin e trafik. Le të kontrollojmë shembujt më të njohur të përdorimit dhe të shohim sa ndihmon kjo.
UnĂ« pĂ«rdor mĂ« sĂ« shumti Ansible pĂ«r: krijimin e skedarĂ«ve tĂ« konfigurimeve nĂ« makinĂ«n e largĂ«t, instalimin e paketave, kopjimin e skedarĂ«ve nĂ« makinĂ«n e largĂ«t dhe pĂ«rmbys. Ndoshta keni shembuj tĂ« tjerĂ« â mĂ« tregoni nĂ« komentet.
Le të shkojmë!
Konfigurimi i Mitogen për Ansible është shumë i thjeshtë:
Instaloni bibliotekën Mitogen:
pip install mitogenTani ka dy mĂ«nyra ekuivalente â ose konfigurojeni opsionet nĂ« skedarin e konfigurimit ansible.cfg, ose vendosni variablet e nevojshme tĂ« ambientit.
Supozoni se rruga për Mitogen të instaluar do të jetë /usr/lib/python2.7/site-packages/ansible_mitogen/plugins/strategy. Atëherë:
export ANSIBLE_STRATEGY_PLUGINS=/usr/lib/python2.7/site-packages/ansible_mitogen/plugins/strategy
export ANSIBLE_STRATEGY=mitogen_linearose
[defaults]
strategy = mitogen_linear
strategy_plugins = /usr/lib/python2.7/site-packages/ansible_mitogen/plugins/strategyTë instalojmë Ansible në virtualenv, me Mitogen dhe pa të:
virtualenv mitogen_ansible
./mitogen_ansible/bin/pip install ansible==2.7.10 mitogen
virtualenv pure_ansible
./pure_ansible/bin/pip install ansible==2.7.10Vini re se Mitogen 0.2.7 nuk punon me Ansible 2.8 (më maj 2019)
Krijojmë aliaset:
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'Tani le të provojmë të rregullojmë një playbook që krijon skedarë në makinën e largët:
---
- 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 }}Dhe do ta ekzekutojmë me Mitogen dhe pa të për krijimin e 10 skedarëve:
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.643sShohim pĂ«rmirĂ«sim prej 2 herĂ«sh. Le tĂ« kontrollojmĂ« pĂ«r 20, 30, âŠ, 100 skedarĂ«:
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.197sNë fund, ne e përshpejtuam ekzekutimin më shumë se 10 herë!
Tani le të provojmë skenarë të ndryshëm dhe të shohim sa më shpejt punojnë të gjitha:
Skenari i kopjimit të skedarëve në hostin e largët nga lokal (me modul
copy):
Skenari i krijimit të skedarëve në hostin e largët me
copymodulin:
Skenari me ngarkimin e skedarëve nga hosti i largët në lokal:
Le të provojmë një skenar me disa (3) makina të largëta, për shembull skenari i kopjimit të skedarëve në hostin e largët:
Siç shihet, Mitogen na e kursen si kohën ashtu edhe trafikun në këto skenarë. Por nëse 'bottle neck' nuk është te Ansible, por në I/O të diskut ose në rrjet, ose kudo tjetër, atëherë është e vështirë të pritet që Mitogen të na ndihmojë.
Le të provojmë një skenar me instalimin e paketave me yum/dnf dhe moduleve python me pip. Paketat ishin të ruajtura që të mos varim nga gabimet në rrjet:
---
- 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
Me Mitogen kjo zuri 12 sekonda, ashtu si edhe pa të.
Në faqen mund të shikoni benchmark-e dhe teste të tjera. Siç thuhet në faqe:
Mitogen nuk mund ta përshpejtojë një modul kur ai ekzekutohet. Ai vetëm mund ta bëjë ekzekutimin e këtij moduli aq të shpejt sa të jetë e mundur.
Prandaj është e rëndësishme të gjeni ngushticat tuaja në implementim dhe nëse ato ndodhin për shkak të Ansible, atëherë Mitogen do t'ju ndihmojë t'i zgjidhni ato dhe të përshpejtoni ndjeshëm ekzekutimin e playbook-ëve tuaj.
Burimi: habr.com
