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 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
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 mitogen
Issa 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_linear
jew
[defaults]
strategy = mitogen_linear
strategy_plugins = /usr/lib/python2.7/site-packages/ansible_mitogen/plugins/strategy
Ejja 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.10
Jekk 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.643s
Naraw 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.197s
Bħ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'
copy
modulu:
-
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
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