on saanud ĂŒheks populaarsemaks . PĂ€rast seda, kui aastal 2015, ĂŒletas osalejate arv Ansible töötab SSH-ĂŒhenduste kaudu kaugmasinatele. See avab SSH-seansi, logib sisse, kopeerib Pythonikoodi ĂŒle vĂ”rgu ja salvestab selle eraldi ajutisse faili. PĂ€rast seda kĂ€ivitab see faili kaugmasinas. Kogu see protsess on ĂŒsna aeganĂ”udev ja tĂŒĂŒtus, seetĂ”ttu on mitmeid viise, kuidas seda optimeerida.
Ăks neist viisidest on
SSH torustikud requiretty seade sudo jaoks oma failis kaugmasinas) /etc/sudoers Uue viisina Ansible'i âkiirendamiseksâ on Python'i teek nimega
Mitogen . Kui keegi ei ole temast kuulnud, siis rÀÀgin lĂŒhidalt tema funktsionaalsusest. See vĂ”imaldab kiiresti kĂ€ivitada Python'i koodi eemal asuvas masinas, ja Ansible on ainult ĂŒks nĂ€ide selle kasutamisest. Mitogen kasutab UNIX pipe'i eemal asuvas masinas ning edastab Python'i koodi zlib'i abil kompresseerituna ja pickle'iga sarjastatuna. See aitab seda kiiremini tĂ€ita ja sÀÀstab liiklust. Kui olete huvitatud detailsemast seletusest, on parem lugeda sellest lehelt. . Kuid tĂ€na keskendume ainult raamtu teostusele Ansible'iga.
Mitogen vÔib teatud tingimustel kiirendada teie Ansible'i koodi mitu korda ja oluliselt vÀhendada liikluskulu. Vaatame kÔige populaarsemaid kasutusnÀiteid ja uurime, kui palju see meile aitab.
Kasutame Ansible'it kĂ”ige enam: konfiguratsioonifailide loomine eemal asuvas masinas, pakettide paigaldamine, failide kopeerimine eemal asuvasse masinasse ja tagasi. VĂ”ib-olla on teil teisi nĂ€iteid â kirjutage kommentaaridesse.
LĂ€hme!
Mitogen'i konfiguratsioon Ansible'ile on vÀga lihtne:
Paigaldame Mitogen'i teegi:
pip install mitogenNĂŒĂŒd on kaks vĂ”rdselt head viisi â kas seadistada valikud failis ansible.cfg vĂ”i seada vajalikud keskkonnamuutujad.
Oletame, et tee installitud Mitogen'i juurde on /usr/lib/python2.7/site-packages/ansible_mitogen/plugins/strategy. Siis:
export ANSIBLE_STRATEGY_PLUGINS=/usr/lib/python2.7/site-packages/ansible_mitogen/plugins/strategy
export ANSIBLE_STRATEGY=mitogen_linearvÔi
[defaults]
strategy = mitogen_linear
strategy_plugins = /usr/lib/python2.7/site-packages/ansible_mitogen/plugins/strategyPaigaldame Ansible'i virtualenv'i, koos Mitogen'i ja ilma selleta:
virtualenv mitogen_ansible
./mitogen_ansible/bin/pip install ansible==2.7.10 mitogen
virtualenv pure_ansible
./pure_ansible/bin/pip install ansible==2.7.10Pange tÀhele, et Mitogen 0.2.7 ei tööta koos Ansible 2.8-ga (mai 2019)
Teeme alias'id:
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'NĂŒĂŒd proovime kĂ€ivitada playbook'i, mis loob faile kaugtööl!
---
- hosts: all
gather_facts: false
tasks:
- name: Loo faile kopeerimis sisu mooduli abil
copy:
content: |
test file {{ item }}
dest: ~/file_{{ item }}
with_sequence: start=1 end={{ n }}Ja kÀivitame koos Mitogen'i ja ilma selleta 10 faili loomiseks:
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.643sMe nĂ€eme tĂ€iust 2 korda. Kontrollime 20, 30, âŠ, 100 faili:
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.197sKokkuvÔttes oleme kiirusest enam kui 10 korda kÔrgema tulemuse saavutanud!
NĂŒĂŒd proovime erinevaid stsenaаŃĐžpe ja vaatame, kui kiiresti meil kĂ”ik töötab:
Failide kopeerimise stsenaarium kaugserverisse kohalikult (mooduliga
copy):
Failide loomise stsenaarium kaugserveris
copymoodul:
Failide allalaadimise stsenaarium kaugserverist kohalikule:
Proovime stsenaariumit, kus on mitu (3) kaugmasinat, nÀiteks stsenaarium failide kopeerimiseks kaugserverisse:
Kuidas nÀha, sÀÀstab Mitogen meile nii aega kui ka liiklust nendes stsenaariumides. Kuid kui 'pudelikael' ei ole Ansible'is, vaid nÀiteks ketta I/O-s vÔi vÔrgus, vÔi kusagil mujal, siis on raske oodata, et Mitogen aitaks.
Proovime stsenaariumit pakettide installimiseks yum/dnf ja pythonimoodulite paigaldamiseks pip'i abil. Paketid olid vahemÀllu salvestatud, et mitte sÔltuda vÔrgu tÔrgetest:
---
- hosts: all
gather_facts: false
tasks:
- name: Paigaldage paketid
become: true
package:
name:
- samba
- httpd
- nano
- ruby
state: present
- name: Paigaldage pip moodulid
become: true
pip:
name:
- pytest-split-tests
- bottle
- pep8
- flask
state: present
Mitogeniga vÔttis see 12 sekundit, nagu ka ilma selleta.
Lehe peal saate vaadata teisi testitulemusi ja benchmarket. Nagu lehelt vÀidetakse:
Mitogen ei saa kiirendada mudelit, kui see on kÀimas. See suudab ainult muuta selle mudeli kÀitamise nii kiireks kui vÔimalik.
SeetÔttu on oluline leida oma juurdumisprobleemid rakenduses ja kui need on tingitud Ansible'ist, siis aitab Mitogen teil neid lahendada ja oluliselt kiirendada teie playbookide tÀitmist.
Allikas: habr.com
