divintò unu di i più populari ... Dopu in 2015 u numeru superava i millaie è Ansible diventò probabilmente u sistema di implementazione è orchestrazione più utilizatu. A so larga gamma di applicazioni hè assai impressiunanti.
Ansible travaglia nantu à cunnessione SSH à ospiti remoti. Apertura una sessione SSH, accede, copia u codice Python nantu à a reta è scrive in un schedariu tempurale separatu. Dopu quì, corre stu schedariu nantu à a macchina remota. Sta sequenza sana di l'operazioni hè abbastanza longa è tediosa, cusì ci sò parechje manere di ottimisimu.
Unu di sti modi hè chì vi permette di utilizà una sessione SSH per eseguisce struzzioni, invece di apre una nova sessione ogni volta, chì ci pò salvà assai tempu. (Ricordate solu di spegne requiretty setting for sudo in your /etc/sudoers u schedariu nantu à a macchina remota)
Un novu modu di overclock Ansible hè una biblioteca di pitone chjamata . S'ellu ùn hà micca intesu parlà di questu, vi spiegheraghju brevemente a so funziunalità. Permette l'esekzione rapida di codice python in una macchina remota, è Ansible hè solu un esempiu di usu. Mitogen usa una pipa UNIX nantu à a macchina remota è trasferisce u codice python cumpressu cù zlib è serializatu cù pickle. Questu aiuta à compie più veloce è salvà u trafficu. Sè site interessatu in una spiegazione più dettagliata, hè megliu leghje nantu à a pagina . Ma oghje ci concentreremu solu nantu à cumu a biblioteca funziona cù Ansible.
Mitogen in certi circustanze pò accelerà u vostru codice Ansible parechje volte è riduce significativamente u cunsumu di trafficu. Fighjemu i casi di usu più populari è vede quantu ci aiuta.
Aduprà Ansible più per: creà schedarii di cunfigurazione in una macchina remota, installà pacchetti, copià i fugliali da è da a macchina remota. Forsi avete altri esempi - scrivite in i cumenti.
Let's go!
A cunfigurazione di Mitogen per Ansible hè assai simplice:
Installa a libreria Mitogen:
pip install mitogenAvà ci sò dui modi equivalenti - o cunfigurà l'opzioni in u schedariu di cunfigurazione ansible.cfg, o stabilisce e variabili di l'ambienti necessarii.
Assumimu chì u percorsu à u Mitogen installatu serà /usr/lib/python2.7/site-packages/ansible_mitogen/plugins/strategy. Allora:
export ANSIBLE_STRATEGY_PLUGINS=/usr/lib/python2.7/site-packages/ansible_mitogen/plugins/strategy
export ANSIBLE_STRATEGY=mitogen_linearo
[defaults]
strategy = mitogen_linear
strategy_plugins = /usr/lib/python2.7/site-packages/ansible_mitogen/plugins/strategyInstallemu Ansible in virtualenv, cù è senza 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.10Per piacè nutate chì Mitogen 0.2.7 ùn funziona micca cù Ansible 2.8 (da maghju 2019)
Creazione di 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'Avà pruvemu à eseguisce un playbook chì crea schedari nantu à una macchina 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 }}E corremu cù è senza Mitogen per creà 10 schedari:
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.643sAvemu vistu una migliione 2 volte. Cuntrollamu per 20, 30, ..., 100 schedari:
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.197sIn u risultatu, avemu acceleratu l'esecuzione di più di 10 volte!
Avà pruvemu diversi scenarii è vede quantu più veloce tuttu funziona per noi:
Script per cupià i fugliali à un host remoto da un locu (cù u modulu
copy):
Script per creà fugliali nantu à un host remoto cù
copymodulu:
Scenariu cù scaricamentu di fugliali da un host remoto à un locu locale:
Pruvemu un scenariu cù parechje (3) macchine remoti, per esempiu un scenariu cù copia di schedari à un host remoto:
Comu pudete vede, Mitogen ci salva u tempu è u trafficu in questi scenarii. Ma s'è u bottleneck ùn hè micca in Ansible, ma per esempiu in l'I / O di un discu o rete, o in un altru locu, allora hè difficiule d'aspittà chì Mitogen ci aiuterà.
Pruvate un script cù l'installazione di pacchetti cù moduli yum/dnf è python cù pip. I pacchetti sò stati in cache per ùn dipende micca di i glitches di a rete:
---
- 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
Cù Mitogen hà pigliatu 12 seconde, cum'è senza ellu.
In pàgina pudete guardà altri benchmarks è testi. Cume a pagina dice:
Mitogen ùn pò micca accelerà u modulu quandu hè in esecuzione. Puderà solu fà l'esekzione di stu modulu u più veloce pussibule.
Per quessa, hè impurtante di truvà i vostri colli di bottiglia in a vostra implementazione è s'ellu sò dovuti à Ansible, allora Mitogen vi aiuterà à risolviri è accelerà significativamente l'esekzione di i vostri playbooks.
Source: www.habr.com
