on muutunud ĂŒheks populaarsemaks . PĂ€rast seda, kui 2015. aastal ĂŒletas projekti tuhandeid ja Ansible on tĂ”enĂ€oliselt kĂ”ige rohkem kasutatav paiknemise ja orkestreerimise sĂŒsteem. Selle laiad rakendusvaldkonnad on vĂ€ga muljetavaldavad.
Ansible töötab SSH-ĂŒhenduste kaudu kaugserveritega. See avab SSH seansi, siseneb sisse, kopeerib Pythonikoodi ĂŒle vĂ”rgu ja kirjutab selle eraldi ajutisse faili. PĂ€rast seda kĂ€ivitab see faili eemales asuvas masinas. Terve see tegevuste jada on ĂŒsna pikk ja tĂŒlikas, seetĂ”ttu on erinevaid viise selle optimeerimiseks.
Ăks nendest viisidest on , mis vĂ”imaldab kasutada ĂŒhte SSH seanssi kĂ€skude tĂ€itmiseks, mitte igakordselt uut seanssi avades, mis vĂ”ib sÀÀsta meile palju aega. (Ainult Ă€ra unusta keelata requiretty sĂ€tted sudo teie /etc/sudoers failis eemales asuvas masinas)
Uue viisi Ansible'i kiirendamiseks on Python'i raamatukogu nimega . Kui keegi pole sellest kuulnud, siis lĂŒhidalt kirjeldan selle funktsionaalsust. See vĂ”imaldab kiiret Python-koodi tĂ€itmist eemales asuvas masinas ja Ansible on vaid ĂŒks nĂ€ide selle kasutamisest. Mitogen kasutab UNIXi toru eemales asuvas masinas ja edastab Python'i koodi, mis on zipitud zlib ja serialiseeritud pickle'i abil. See aitab seda kiiremini tĂ€ita ja sÀÀstab liiklust. Kui olete huvitatud detailsemast selgitusest, on kĂ”ige parem lugeda sellest lehelt . Kuid tĂ€na keskendume ainult raamatukogu tööle koos Ansible'iga.
Mitogen vÔib teatud asjaoludel kiirendada teie Ansible'i koodi mitmekordselt ja oluliselt vÀhendada liikluse kulu. Vaatame kÔige populaarsemaid kasutusnÀiteid ja nÀeme, kui palju see meile aitab.
Kasutame Ansible'it kĂ”ige rohkem: konfiguratsioonifailide loomisel eemales asuvas masinas, pakettide installimisel, failide kopeerimisel eemales asuvasse masinasse ja tagasi. VĂ”ib-olla on teil muid nĂ€iteid â kirjutage need kommentaaridesse.
LĂ€hme!
Mitogen'i konfiguratsioon Ansible'i jaoks on vÀga lihtne:
Installime Mitogen'i raamatukogu:
pip install mitogenNĂŒĂŒd on kaks vĂ”rdset viisi â kas seadistada valikud ansible.cfg konfiguratsioonifailis vĂ”i mÀÀrata 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 virtualenvis, koos ja ilma Mitogenita:
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 Ansible 2.8-ga (mai 2019 seisuga)
Loome aliasid:
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 playbooki, mis loob faile kaugmasinas:
---
- 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 }}Ja kÀivitame koos ja ilma Mitogenita, et luua 10 faili:
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.643sNĂ€eme, et parandus on 2 korda parem. Vaadakem, mis juhtub 20, 30, âŠ, 100 faili korral:
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 kiirusime tÀitmist enam kui 10 korda!
NĂŒĂŒd proovime erinevaid stsenaariume ja vaatame, kui kiiresti kĂ”ik töötab:
Failide kopeerimise stsenaarium kaugteenusesse lokaalsest (koos mooduliga
kopeerida):
Failide loomise stsenaarium kaugmasinas koos
kopeeridamooduliga:
Failide allalaadimise stsenaarium kaugmasinast kohalikku:
Proovime stsenaariumi kolme (3) kaugmasinaga, nÀiteks kopeerimist kaugteenusesse:
Nagu nÀha, sÀÀstab Mitogen meilt nii aega kui ka liiklust nendes stsenaariumites. Kuid kui kitsaskoht ei ole Ansible'is, vaid nÀiteks kettasel vÔi vÔrgus, siis on keeruline oodata, et Mitogen meid aitab.
Proovime stsenaariumi pakettide installimise jaoks yum/dnf ja Python'i moodulite installimiseks pip'i kaudu. Pakettide vahemÀlu oli loomine, et mitte sÔltuda vÔrgu tÔrgetest:
---
- 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
Mitogeniga kestis see 12 sekundit, nagu ka ilma selleta.
LehekĂŒljel saate vaadata teisi töötlusi ja teste. Nagu lehelt nĂ€htub:
Mitogen ei saa moduli tÀitmist kiirendada. See vÔib ainult muuta selle moduli tÀitmise nii kiireks kui vÔimalik.
SeetÔttu on oluline leida teie kasutuskohtade kitsaskohad, ja kui need tulenevad Ansible'ist, aitab Mitogen teil need kÔrvaldada ja oluliselt kiirendada teie playbookide tÀitmist.
Allikas: habr.com
