Ansible töötab SSH-ühenduste kaudu kaughostidega. See avab SSH-seansi, logib sisse, kopeerib Pythoni koodi üle võrgu ja kirjutab selle eraldi ajutisse faili. Pärast seda käivitab see selle faili kaugmasinas. Kogu see toimingute jada on üsna pikk ja tüütu, nii et selle optimeerimiseks on erinevaid võimalusi.
Üks neist viisidest on requiretty
teie sudo seadistus /etc/sudoers
fail kaugmasinas)
Uus viis Ansible'i kiirendamiseks on pythoni raamatukogu nimega
Mitogeen võib teatud asjaoludel teie Ansible koodi mitu korda kiirendada ja liikluskulu oluliselt vähendada. Vaatame kõige populaarsemaid kasutusjuhtumeid ja vaatame, kui palju see meid aitab.
Kasutan Ansible'i kõige enam: konfiguratsioonifailide loomiseks kaugmasinas, pakettide installimiseks, failide kopeerimiseks kaugmasinasse ja sealt. Võib-olla on teil muid näiteid - kirjutage kommentaaridesse.
Mine!
Ansible'i mitogeeni konfiguratsioon on väga lihtne:
Installige mitogeeni teek:
pip install mitogen
Nüüd on kaks samaväärset võimalust – kas seadistada suvandid ansible.cfg konfiguratsioonifailis või määrata vajalikud keskkonnamuutujad.
Oletame, et tee paigaldatud mitogeeni saab olema /usr/lib/python2.7/site-packages/ansible_mitogen/plugins/strategy
. Seejärel:
export ANSIBLE_STRATEGY_PLUGINS=/usr/lib/python2.7/site-packages/ansible_mitogen/plugins/strategy
export ANSIBLE_STRATEGY=mitogen_linear
või
[defaults]
strategy = mitogen_linear
strategy_plugins = /usr/lib/python2.7/site-packages/ansible_mitogen/plugins/strategy
Installime Ansible'i virtualenv'i koos Mitogeniga ja ilma:
virtualenv mitogen_ansible
./mitogen_ansible/bin/pip install ansible==2.7.10 mitogen
virtualenv pure_ansible
./pure_ansible/bin/pip install ansible==2.7.10
Pange tähele, et Mitogen 0.2.7 ei tööta koos versiooniga Ansible 2.8 (2019. aasta mai seisuga)
Alinimede tegemine:
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'
Proovime nüüd käivitada esitusraamatut, 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 selle koos Mitogeniga ja ilma, 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.643s
Näeme kahekordset paranemist. Kontrollime 2, 20, ..., 30 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.197s
Selle tulemusena kiirendasime täitmist rohkem kui 10 korda!
Nüüd proovime erinevaid stsenaariume ja vaatame, kui palju kiiremini kõik meie jaoks toimib:
-
Skript failide kopeerimiseks kohalikust hostist (koos mooduliga
copy
):
-
Skript failide loomiseks kaughostis
copy
moodul:
-
Stsenaarium failide allalaadimisega kaughostist kohalikku:
Proovime mitme (3) kaugmasinaga stsenaariumi, näiteks failide kaughosti kopeerimisega:
Nagu näete, säästab Mitogen nende stsenaariumide puhul meie aega ja liiklust. Aga kui kitsaskoht pole Ansibles, vaid näiteks ketta või võrgu I/O-s või kusagil mujal, siis on raske loota, et Mitogen meid aitaks.
Proovime skripti yum/dnf ja pythoni moodulitega pakettide installimisega pip abil. Paketid salvestati vahemällu, et mitte sõltuda võrgutõ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 kulus 12 sekundit, sama palju kui ilma selleta.
Lehel
Mitogeen ei saa moodulit kiirendada, kui see töötab. See võib muuta selle mooduli täitmise ainult nii kiireks kui võimalik.
Seetõttu on oluline leida oma kasutuselevõtu kitsaskohad ja kui need on tingitud Ansiblest, siis Mitogen aitab teil need lahendada ja kiirendab oluliselt teie mänguraamatute täitmist.
Allikas: www.habr.com