u bë një nga më të njohurat . Pas blerjes në vitin 2015, numri i kaloi mijëra dhe Ansible u bë ndoshta sistemi më i përdorur për shpërndarje dhe orkestrim. Fushat e tij të gjera të aplikimit janë shumë impresionuese.
Ansible funksionon përmes lidhjeve SSH me hostet e largët. Ai hap një seancë SSH, bën logimin, kopjon kodin në Python përmes rrjetit dhe e ruan atë në një skedar të përkohshëm. Pas kësaj, ai ekzekuton këtë skedar në makinën e largët. I gjithë ky proces është mjaft i gjatë dhe i mundimshëm, prandaj ekzistojnë mënyra të ndryshme për ta optimizuar atë.
Një nga këto mënyra është i cili lejon përdorimin e një seance SSH për ekzekutimin e instrukcioneve, në vend që të hapë çdo herë një seancë të re, duke kursyer kështu shumë kohë. (Vetëm mos harro të çaktivizosh requiretty konfigurimin për sudo në /etc/sudoers skedarin tënd në makinën e largët)
NjĂ« mĂ«nyrĂ« e re pĂ«r tĂ« "shpejtuar" Ansible Ă«shtĂ« biblioteka python e quajtur . nĂ«se dikush nuk ka dĂ«gjuar pĂ«r tĂ« â do ta pĂ«rshkruaj shkurtimisht funksionalitetin e saj. Ajo lejon ekzekutimin e shpejtĂ« tĂ« kodit Python nĂ« njĂ« makinĂ« tĂ« largĂ«t dhe Ansible Ă«shtĂ« vetĂ«m njĂ« nga shembujt e pĂ«rdorimit. Mitogen pĂ«rdor UNIX pipe nĂ« makinĂ«n e largĂ«t dhe transferon kodin Python tĂ« kompresuar me zlib dhe tĂ« seralizuar me pickle. Kjo ndihmon pĂ«r ta ekzekutuar atĂ« mĂ« shpejt dhe pĂ«r tĂ« kursyer trafik. NĂ«se jeni tĂ« interesuar pĂ«r njĂ« shpjegim mĂ« tĂ« detajuar, mĂ« mirĂ« tĂ« lexoni rreth saj nĂ« faqen . Por sot do tĂ« pĂ«rqendrohemi vetĂ«m nĂ« punĂ«n e bibliotekĂ«s me Ansible.
Mitogen në disa rrethana mund të përshpejtojë kodin tuaj Ansible disa herë dhe të zvogëlojë ndjeshëm konsumin e trafik. Le të kontrollojmë shembujt më të njohur të përdorimit dhe të shohim sa na ndihmon kjo.
UnĂ« pĂ«rdor mĂ« sĂ« shumti Ansible pĂ«r: krijimin e skedave tĂ« konfigurimit nĂ« makinĂ« tĂ« largĂ«t, instalimin e pakove, kopjimin e skedave nĂ« makinĂ«n e largĂ«t dhe mbrapsht. Ndoshta keni shembuj tĂ« tjerĂ« â shkruani nĂ« komentet.
Fillojmë!
Konfigurimi i Mitogen për Ansible është shumë i thjeshtë:
Instalojmë bibliotekën Mitogen:
pip install mitogenTani tani tani tani dy mĂ«nyra tĂ« barabarta â ose tĂ« konfiguroni opsionet nĂ« skedarin e konfigurimit ansible.cfg, ose tĂ« vendosni variablat e nevojshme tĂ« mjedisit.
Supozoni se rruga për Mitogenin e 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 që Mitogen 0.2.7 nuk funksionon me Ansible 2.8 (në maj 2019)
Krijojmë aliases:
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ë përpiqemi të ekzekutojmë playbook që krijon skedarë në makinën e largët:
---
- hosts: all
gather_facts: false
tasks:
- name: Krijo skedarë me modul përmbajtje kopje
copy:
content: |
skedar testi {{ item }}
dest: ~/file_{{ item }}
with_sequence: start=1 end={{ n }}Dhe do ta ekzekutojmë me Mitogen dhe pa të për të krijuar 10 skedarë:
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.643sNe jemi duke parĂ« njĂ« 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.197sSi rezultat, ne arritëm të përshpejtojmë ekzekutimin më shumë se 10 herë!
Tani le të provojmë skenarë të ndryshëm dhe të shohim sa më shpejt funksionon gjithçka:
Skenari i kopjimit të skedarëve në një host të largët nga lokal (me modul
copy):
Skenari i krijimit të skedarëve në një host të largët me
copymodulin:
Skenari me ngarkimin e skedarëve nga një host të largët në lokal:
Le të provojmë një skenar me disa (3) makina të largëta, për shembull skenari me kopjimin e skedarëve në një host të largët:
Siç duket, Mitogen na kursen si kohë ashtu edhe trafik në këto skenarë. Por nëse "ngërçi" nuk është në Ansible, por p.sh. në I/O të diskut ose rrjetit, ose kudo tjetër, atëherë është e vështirë të presim që Mitogen të na ndihmojë.
Le të provojmë një skenar me instaluar paketat me yum/dnf dhe modulet python duke përdorur pip. Paketat u ruajtën në cache që të mos varen nga problemet në rrjet:
---
- hosts: all
gather_facts: false
tasks:
- name: Instaloni paketet
become: true
package:
name:
- samba
- httpd
- nano
- ruby
state: present
- name: Instaloni modulët pip
become: true
pip:
name:
- pytest-split-tests
- bottle
- pep8
- flask
state: present
Me Mitogen, kjo mori 12 sekonda, ashtu si pa të.
Në faqe mund të shihni benchmarks dhe teste të tjera. Siç përmendet në faqe:
Mitogen nuk mund ta përshpejtojë një modul kur ai ekzekutohet. Ai mund vetëm ta bëjë ekzekutimin e këtij moduli të shpejtë sa më shumë që është e mundur.
Prandaj, është e rëndësishme të identifikoni pika të ngushta në shpërndarje dhe, nëse ato janë për shkak të Ansible, atëherë Mitogen do t'ju ndihmojë t'i zgjidhni ato dhe të përshpejtoni ndjeshëm ekzekutimin e playbooks tuaj.
Burimi: habr.com
