kļuva par vienu no populārākajiem . Pēc 2015. gadā numurs pārsniedza tūkstošus, un Ansible kļuva par, iespējams, visvairāk izmantoto izvietošanas un orķestrēšanas sistēmu. Tās plašais lietojumu klāsts ir ļoti iespaidīgs.
Ansible darbojas, izmantojot SSH savienojumus ar attāliem saimniekiem. Tas atver SSH sesiju, piesakās, tīklā kopē Python kodu un ieraksta to atsevišķā pagaidu failā. Pēc tam tas palaiž šo failu attālajā datorā. Visa šī darbību secība ir diezgan gara un nogurdinoša, tāpēc ir dažādi veidi, kā to optimizēt.
Viens no šiem veidiem ir kas ļauj izmantot vienu SSH sesiju, lai izpildītu instrukcijas, nevis katru reizi atvērtu jaunu sesiju, kas var mums ietaupīt daudz laika. (Vienkārši atcerieties izslēgt requiretty iestatījums sudo jūsu /etc/sudoers fails attālajā mašīnā)
Jauns veids, kā pārspīlēt Ansible, ir python bibliotēka ar nosaukumu . Ja kāds par to nav dzirdējis, es īsi aprakstīšu tā funkcionalitāti. Tas ļauj ātri izpildīt python kodu attālā mašīnā, un Ansible ir tikai viens lietošanas piemērs. Mitogen izmanto UNIX cauruli attālajā mašīnā un pārsūta python kodu, kas saspiests ar zlib un serializēts ar marinētu. Tas palīdz to pabeigt ātrāk un ietaupa satiksmi. Ja interesē sīkāks skaidrojums, vislabāk par to lasīt lapā . Taču šodien pievērsīsimies tikai tam, kā bibliotēka strādā ar Ansible.
Mitogen noteiktos apstākļos var vairākas reizes paātrināt jūsu Ansible kodu un ievērojami samazināt satiksmes patēriņu. Apskatīsim populārākos lietošanas gadījumus un redzēsim, cik ļoti tas mums palīdz.
Es visvairāk izmantoju Ansible: konfigurācijas failu izveidei attālā datorā, pakotņu instalēšanai, failu kopēšanai uz attālo mašīnu un no tās. Varbūt jums ir citi piemēri - rakstiet komentāros.
Iesim!
Ansible mitogēna konfigurācija ir ļoti vienkārša:
Instalējiet Mitogen bibliotēku:
pip install mitogenTagad ir divi līdzvērtīgi veidi - vai nu konfigurēt opcijas ansible.cfg konfigurācijas failā, vai iestatīt nepieciešamos vides mainīgos.
Pieņemsim, ka ceļš uz uzstādīto Mitogēnu būs /usr/lib/python2.7/site-packages/ansible_mitogen/plugins/strategy. Pēc tam:
export ANSIBLE_STRATEGY_PLUGINS=/usr/lib/python2.7/site-packages/ansible_mitogen/plugins/strategy
export ANSIBLE_STRATEGY=mitogen_linearvai
[defaults]
strategy = mitogen_linear
strategy_plugins = /usr/lib/python2.7/site-packages/ansible_mitogen/plugins/strategyInstalēsim Ansible programmā virtualenv ar un bez 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.10Lūdzu, ņemiet vērā, ka Mitogen 0.2.7 nedarbojas ar Ansible 2.8 (no 2019. gada maija)
Pseidonīmu izveide:
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'Tagad mēģināsim palaist rokasgrāmatu, kas izveido failus attālā mašīnā:
---
- 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 }}Palaidīsim to ar un bez Mitogen, lai izveidotu 10 failus:
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.643sMēs redzam divkāršu uzlabojumu. Pārbaudīsim 2, 20, ..., 30 failus:
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.197sRezultātā mēs paātrinājām izpildi vairāk nekā 10 reizes!
Tagad izmēģināsim dažādus scenārijus un redzēsim, cik daudz ātrāk viss darbojas mūsu labā:
Skripts failu kopēšanai uz attālo resursdatoru no vietējā (ar moduli
copy):
Skripts failu izveidei attālā resursdatorā ar
copymodulis:
Scenārijs ar failu lejupielādi no attālā resursdatora uz vietējo:
Izmēģināsim scenāriju ar vairākām (3) attālajām iekārtām, piemēram, scenāriju ar failu kopēšanu uz attālo resursdatoru:
Kā redzat, Mitogen šajos scenārijos ietaupa gan laiku, gan satiksmi. Bet, ja sašaurinājums nav Ansible, bet, piemēram, diska vai tīkla I/O vai kaut kur citur, tad ir grūti sagaidīt, ka Mitogen mums palīdzēs.
Izmēģināsim skriptu, instalējot pakotnes ar yum/dnf un python moduļiem, izmantojot pip. Pakotnes tika saglabātas kešatmiņā, lai tās nebūtu atkarīgas no tīkla kļūmēm:
---
- 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
Ar Mitogen tas aizņēma 12 sekundes, tāpat kā bez tā.
Lapā varat apskatīt citus etalonus un testus. Kā teikts lapā:
Mitogen nevar paātrināt moduli, kad tas darbojas. Tas var tikai padarīt šī moduļa izpildi pēc iespējas ātrāku.
Tāpēc ir svarīgi atrast savas izvietošanas vājās vietas un, ja tās ir saistītas ar Ansible, Mitogen palīdzēs tās atrisināt un ievērojami paātrinās jūsu rokasgrāmatu izpildi.
Avots: www.habr.com
