tuli yksi suosituimmista . Jälkeen vuonna 2015 numero ylitti tuhansia ja Ansiblesta tuli luultavasti käytetyin käyttöönotto- ja orkestrointijärjestelmä. Sen laaja sovellusvalikoima on erittäin vaikuttava.
Ansible toimii SSH-yhteyksien kautta etäisäntäkoneisiin. Se avaa SSH-istunnon, kirjautuu sisään, kopioi Python-koodin verkon yli ja kirjoittaa sen erilliseen väliaikaiseen tiedostoon. Sen jälkeen se suorittaa tämän tiedoston etäkoneella. Tämä koko toimintosarja on melko pitkä ja työläs, joten sen optimoimiseen on useita tapoja.
Yksi näistä tavoista on jonka avulla voit käyttää yhtä SSH-istuntoa ohjeiden suorittamiseen sen sijaan, että avaat uuden istunnon joka kerta, mikä voi säästää meiltä paljon aikaa. (Muista vain sammuttaa requiretty asetus sudolle /etc/sudoers tiedosto etäkoneella)
Uusi tapa ylikellottaa Ansible on python-kirjasto nimeltä . Jos joku ei ole kuullut siitä, kuvailen lyhyesti sen toimivuutta. Se mahdollistaa python-koodin nopean suorittamisen etäkoneella, ja Ansible on vain yksi esimerkki käytöstä. Mitogen käyttää UNIX-putkea etäkoneessa ja siirtää zlibillä pakatun python-koodin ja sarjoitetun pippurin kanssa. Tämä auttaa suorittamaan sen nopeammin ja säästää liikennettä. Jos olet kiinnostunut tarkemmasta selityksestä, on parasta lukea se sivulta . Mutta tänään keskitymme vain siihen, miten kirjasto toimii Ansiblen kanssa.
Mitogen voi tietyissä olosuhteissa nopeuttaa Ansible-koodiasi useita kertoja ja vähentää merkittävästi liikenteen kulutusta. Katsotaanpa suosituimpia käyttötapauksia ja katsotaan kuinka paljon se auttaa meitä.
Käytän Ansiblea eniten: konfigurointitiedostojen luomiseen etäkoneella, pakettien asentamiseen, tiedostojen kopioimiseen etäkoneelle ja sieltä pois. Ehkä sinulla on muita esimerkkejä - kirjoita kommentteihin.
Mennään!
Mitogeenin konfigurointi Ansiblelle on hyvin yksinkertainen:
Asenna Mitogen-kirjasto:
pip install mitogenNyt on kaksi vastaavaa tapaa - joko määrittää asetukset ansible.cfg-määritystiedostossa tai asettaa tarvittavat ympäristömuuttujat.
Oletetaan, että polku asennettuun mitogeeniin on /usr/lib/python2.7/site-packages/ansible_mitogen/plugins/strategy. Sitten:
export ANSIBLE_STRATEGY_PLUGINS=/usr/lib/python2.7/site-packages/ansible_mitogen/plugins/strategy
export ANSIBLE_STRATEGY=mitogen_lineartai
[defaults]
strategy = mitogen_linear
strategy_plugins = /usr/lib/python2.7/site-packages/ansible_mitogen/plugins/strategyAsennamme Ansiblen virtualenv:hen Mitogenin kanssa ja ilman:
virtualenv mitogen_ansible
./mitogen_ansible/bin/pip install ansible==2.7.10 mitogen
virtualenv pure_ansible
./pure_ansible/bin/pip install ansible==2.7.10Huomaa, että Mitogen 0.2.7 ei toimi Ansible 2.8:n kanssa (toukokuusta 2019 alkaen)
Aliaksien tekeminen:
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'Yritetään nyt ajaa pelikirja, joka luo tiedostoja etäkoneelle:
---
- 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 suoritetaan se Mitogenin kanssa ja ilman luodaksesi 10 tiedostoa:
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äemme kaksinkertaisen parannuksen. Tarkistetaan 2, 20, ..., 30 tiedostoa:
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.197sTämän seurauksena nopeutimme toteutusta yli 10 kertaa!
Kokeillaan nyt erilaisia skenaarioita ja katsotaan kuinka paljon nopeammin kaikki toimii meillä:
Komentosarja tiedostojen kopioimiseksi etäisäntään paikalliselta koneelta (moduulin kanssa
copy):
Komentosarja tiedostojen luomiseen etäisännälle
copymoduuli:
Skenaario tiedostojen lataamisesta etäisännästä paikalliseen:
Kokeillaan skenaariota useilla (3) etäkoneilla, esimerkiksi skenaario, jossa tiedostot kopioidaan etäisäntään:
Kuten näette, Mitogen säästää sekä aikaa että liikennettä näissä skenaarioissa. Mutta jos pullonkaula ei ole Ansiblessa, vaan esimerkiksi levyn tai verkon I/O:ssa tai jossain muualla, niin on vaikea odottaa Mitogenin auttavan meitä.
Kokeillaan komentosarjaa, jossa asennetaan paketit yum/dnf- ja python-moduuleilla pip:llä. Paketit tallennettiin välimuistiin, jotta ne eivät olisi riippuvaisia verkkohäiriöistä:
---
- 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
Mitogenilla se kesti 12 sekuntia, sama kuin ilman sitä.
Sivulla voit tarkastella muita vertailuarvoja ja testejä. Kuten sivulla sanotaan:
Mitogen ei voi nopeuttaa moduulia sen ollessa käynnissä. Se voi vain tehdä tämän moduulin suorittamisesta mahdollisimman nopeaa.
Siksi on tärkeää löytää käyttöönoton pullonkaulat ja jos ne johtuvat Ansiblesta, Mitogen auttaa sinua ratkaisemaan ne ja nopeuttaa pelikirjojen suorittamista merkittävästi.
Lähde: will.com
