dadi salah siji sing paling populer . Sawise ing 2015 nomer ngluwihi ewu lan Ansible dadi mbokmenawa penyebaran paling akeh digunakake lan sistem orkestrasi. Sawijining sawetara saka sudhut aplikasi banget nyengsemaken.
Ansible dianggo liwat sambungan SSH menyang host remot. Mbukak sesi SSH, mlebu, nyalin kode Python liwat jaringan lan nulis menyang file sementara sing kapisah. Sawisé iku, mbukak file iki ing mesin remot. Kabeh urutan operasi iki cukup dawa lan mboseni, mula ana macem-macem cara kanggo ngoptimalake.
Salah sawijining cara yaiku sing ngidini sampeyan nggunakake siji sesi SSH kanggo nglakokake instruksi, tinimbang mbukak sesi anyar saben wektu, sing bisa ngirit wektu akeh. (Cukup elinga kanggo mateni requiretty setelan kanggo sudo ing /etc/sudoers file ing mesin remot)
Cara anyar kanggo overclock Ansible yaiku perpustakaan python sing diarani . Yen ana sing durung krungu, aku bakal nerangake kanthi ringkes fungsine. Iki ngidini eksekusi kode python kanthi cepet ing mesin remot, lan Ansible minangka salah sawijining conto panggunaan. Mitogen nggunakake pipa UNIX ing mesin remot lan nransfer kode python sing dikompres karo zlib lan serial karo pickle. Iki mbantu ngrampungake kanthi luwih cepet lan ngirit lalu lintas. Yen sampeyan kasengsem ing panjelasan luwih rinci, iku paling apik kanggo maca babagan ing kaca . Nanging dina iki kita bakal fokus mung babagan cara kerja perpustakaan karo Ansible.
Mitogen ing kahanan tartamtu bisa nyepetake kode Ansible kaping pirang-pirang lan nyuda konsumsi lalu lintas kanthi signifikan. Ayo dipriksa kasus panggunaan sing paling populer lan deleng kepiye mbantu kita.
Aku nggunakake Ansible paling kanggo: nggawe file konfigurasi ing mesin remot, nginstal paket, nyalin file menyang lan saka mesin remot. Mungkin sampeyan duwe conto liyane - tulis ing komentar.
Ayo ayo!
Konfigurasi mitogen kanggo Ansible gampang banget:
Instal perpustakaan Mitogen:
pip install mitogenSaiki ana rong cara sing padha - salah siji ngatur opsi ing file konfigurasi ansible.cfg, utawa nyetel variabel lingkungan sing perlu.
Ayo dadi nganggep yen path menyang Mitogen diinstal bakal /usr/lib/python2.7/site-packages/ansible_mitogen/plugins/strategy. banjur:
export ANSIBLE_STRATEGY_PLUGINS=/usr/lib/python2.7/site-packages/ansible_mitogen/plugins/strategy
export ANSIBLE_STRATEGY=mitogen_linearutawa
[defaults]
strategy = mitogen_linear
strategy_plugins = /usr/lib/python2.7/site-packages/ansible_mitogen/plugins/strategyAyo nginstal Ansible ing virtualenv, kanthi lan tanpa 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.10Elinga yen Mitogen 0.2.7 ora bisa digunakake karo Ansible 2.8 (mula Mei 2019)
Nggawe alias:
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'Saiki ayo nyoba mbukak playbook sing nggawe file ing mesin remot:
---
- 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 }}Lan ayo mbukak nganggo lan tanpa Mitogen kanggo nggawe 10 file:
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.643sWe ndeleng dandan 2-melu. Ayo mriksa file 20, 30, ..., 100:
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.197sAkibaté, kita nyepetake eksekusi luwih saka 10 kaping!
Saiki ayo nyoba macem-macem skenario lan deleng sepira luwih cepet kabeh bisa digunakake kanggo kita:
Skrip kanggo nyalin file menyang host remot saka sing lokal (kanthi modul
copy):
Script kanggo nggawe file ing host remot karo
copymodul:
Skenario kanthi ngundhuh file saka host remot menyang sing lokal:
Coba skenario karo sawetara (3) mesin remot, contone skenario nyalin file menyang host remot:
Kaya sing sampeyan ngerteni, Mitogen ngirit wektu lan lalu lintas ing skenario kasebut. Nanging yen bottleneck ora ana ing Ansible, nanging contone ing I / O saka disk utawa jaringan, utawa nang endi wae liya, banjur iku hard kanggo nyana yen Mitogen bakal bantuan kita.
Ayo nyoba skrip kanthi nginstal paket nganggo modul yum/dnf lan python nggunakake pip. Paket kasebut di-cache supaya ora gumantung ing gangguan jaringan:
---
- 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
Kanthi Mitogen butuh 12 detik, padha karo tanpa.
Ing kaca sampeyan bisa ndeleng pathokan lan tes liyane. Minangka kaca kasebut:
Mitogen ora bisa nyepetake modul nalika lagi mlaku. Mung bisa nggawe eksekusi modul iki kanthi cepet.
Mula, penting kanggo nemokake kemacetan ing panyebaran sampeyan lan yen ana amarga Ansible, Mitogen bakal mbantu sampeyan ngatasi lan nyepetake eksekusi playbook sampeyan.
Source: www.habr.com
