sar wieħed mill-aktar popolari . Wara fl-2015 in-numru qabeż l-eluf u Ansible sar probabbilment l-aktar sistema ta’ skjerament u orkestrazzjoni użata. Il-firxa wiesgħa ta 'applikazzjonijiet tagħha hija impressjonanti ħafna.
Ansible jaħdem fuq konnessjonijiet SSH għal hosts remoti. Tiftaħ sessjoni SSH, tidħol, tikkopja l-kodiċi Python fuq in-netwerk u tikteb f'fajl temporanju separat. Wara dan, imexxi dan il-fajl fuq il-magna remota. Din is-sekwenza kollha ta 'operazzjonijiet hija pjuttost twila u tedjanti, għalhekk hemm diversi modi biex tiġi ottimizzata.
Wieħed minn dawn il-modi huwa li jippermettilek tuża sessjoni waħda SSH biex tesegwixxi struzzjonijiet, aktar milli tiftaħ sessjoni ġdida kull darba, li tista 'tiffranka ħafna ħin. (Ftakar biss li titfi requiretty iffissar għal sudo fil tiegħek /etc/sudoers fajl fuq il-magna remota)
Mod ġdid biex overclock Ansible huwa librerija python imsejħa . Jekk xi ħadd ma semax biha, ser niddeskrivi fil-qosor il-funzjonalità tagħha. Jippermetti eżekuzzjoni mgħaġġla ta 'kodiċi python fuq magna remota, u Ansible huwa biss eżempju wieħed ta' użu. Mitogen juża pajp UNIX fuq il-magna remota u jittrasferixxi kodiċi python ikkompressat bi zlib u serjalizzat bil-pickle. Dan jgħin biex jitlesta aktar malajr u jiffranka t-traffiku. Jekk inti interessat fi spjegazzjoni aktar dettaljata, huwa aħjar li taqra dwarha fuq il-paġna . Imma llum se niffukaw biss fuq kif taħdem il-librerija ma' Ansible.
Mitogen f'ċerti ċirkostanzi jista 'jħaffef il-kodiċi Ansible tiegħek diversi drabi u jnaqqas b'mod sinifikanti l-konsum tat-traffiku. Ejja niċċekkjaw l-aktar każijiet ta’ użu popolari u naraw kemm tgħinna.
Jien nuża Ansible l-aktar għal: il-ħolqien ta' fajls ta' konfigurazzjoni fuq magna remota, l-installazzjoni ta' pakketti, l-ikkupjar ta' fajls minn u lejn il-magna remota. Forsi għandek eżempji oħra - ikteb fil-kummenti.
Ejja ħa mmorru!
Il-konfigurazzjoni ta' Mitogen għal Ansible hija sempliċi ħafna:
Installa l-librerija Mitogen:
pip install mitogenIssa hemm żewġ modi ekwivalenti - jew tikkonfigura l-għażliet fil-fajl ta 'konfigurazzjoni ansible.cfg, jew issettja l-varjabbli ambjentali meħtieġa.
Ejja nassumu li t-triq għall-Mitogen installat se tkun /usr/lib/python2.7/site-packages/ansible_mitogen/plugins/strategy. Imbagħad:
export ANSIBLE_STRATEGY_PLUGINS=/usr/lib/python2.7/site-packages/ansible_mitogen/plugins/strategy
export ANSIBLE_STRATEGY=mitogen_linearjew
[defaults]
strategy = mitogen_linear
strategy_plugins = /usr/lib/python2.7/site-packages/ansible_mitogen/plugins/strategyEjja ninstallaw Ansible f'virtualenv, bi u mingħajr 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.10Jekk jogħġbok innota li Mitogen 0.2.7 ma jaħdimx ma' Ansible 2.8 (minn Mejju 2019)
Nagħmlu psewdonimi:
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'Issa ejja nippruvaw inħaddmu playbook li joħloq fajls fuq magna remota:
---
- 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 }}U ejja nħaddmuh bi u mingħajr Mitogen biex noħolqu 10 fajls:
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.643sNaraw titjib doppju. Ejja niċċekkjaw għal 2, 20, ..., 30 fajl:
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.197sBħala riżultat, aċċellejna l-eżekuzzjoni b'aktar minn 10 darbiet!
Issa ejja nippruvaw xenarji differenti u naraw kemm kollox jaħdem aktar malajr għalina:
Script għall-ikkupjar ta' fajls għal host remot minn wieħed lokali (bil-modulu
copy):
Script għall-ħolqien ta 'fajls fuq host remot ma'
copymodulu:
Xenarju bit-tniżżil ta' fajls minn host remot għal wieħed lokali:
Ejja nippruvaw xenarju b'diversi (3) magni remoti, pereżempju xenarju b'ikkupjar ta' fajls lil host remot:
Kif tistgħu taraw, Mitogen jiffranka kemm il-ħin kif ukoll it-traffiku f'dawn ix-xenarji. Imma jekk il-konġestjoni mhix f'Ansible, iżda pereżempju fl-I/O ta 'disk jew netwerk, jew x'imkien ieħor, allura huwa diffiċli li wieħed jistenna li Mitogen se jgħinna.
Ejja nippruvaw script bl-installazzjoni ta 'pakketti b'moduli yum/dnf u python bl-użu ta' pip. Il-pakketti ġew fil-cache sabiex ma jiddependux fuq problemi tan-netwerk:
---
- 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
B'Mitogen ħadu 12-il sekonda, l-istess bħal mingħajru.
Fuq il-paġna tista' tħares lejn benchmarks u testijiet oħra. Kif tgħid il-paġna:
Mitogen ma jistax iħaffef il-modulu meta jkun qed jaħdem. Jista 'biss jagħmel l-eżekuzzjoni ta' dan il-modulu malajr kemm jista 'jkun.
Għalhekk, huwa importanti li ssib il-konġestjonijiet tiegħek fl-iskjerament tiegħek u jekk huma dovuti għal Ansible, allura Mitogen jgħinek issolvihom u tħaffef b'mod sinifikanti l-eżekuzzjoni tal-playbooks tiegħek.
Sors: www.habr.com
