irbecis viens no populÄrÄkajiem . PÄc tam, kad 2015. gadÄ dalÄ«bnieku skaits pÄrsniedza tÅ«kstoÅ”iem, un Ansible kļuva, iespÄjams, par visvairÄk izmantoto izvietoÅ”anas un orÄ·estrÄÅ”anas sistÄmu. TÄs plaÅ”Äs pielietoÅ”anas jomas ir ļoti iespaidÄ«gas.
Ansible darbojas caur SSH savienojumiem ar attÄlinÄtiem hostiem. Tas atver SSH sesiju, veic pieteikÅ”anos, pÄrsÅ«ta Python kodu pa tÄ«klu un saglabÄ to atseviÅ”Ä·Ä pagaidu failÄ. PÄc tam tas palaidÄ«s Å”o failu attÄlinÄtajÄ maŔīnÄ. Visa Ŕī darbÄ«bu secÄ«ba ir diezgan ilga un apgrÅ«tinoÅ”a, tÄpÄc ir dažÄdi veidi, kÄ to optimizÄt.
Viens no Å”iem veidiem ir , kas ļauj izmantot vienu SSH sesiju instrukciju izpildei, nevis katru reizi atvÄrt jaunu sesiju, kas var ietaupÄ«t mums daudz laika. (Tikai neaizmirstiet izslÄgt requiretty iestatÄ«jumu sudo jÅ«su /etc/sudoers failÄ attÄlinÄtajÄ maŔīnÄ)
Jaunais veids, kÄ "uzsÄkt" Ansible, ir Python bibliotÄka ar nosaukumu . Ja kÄds par to nav dzirdÄjis ā tad Ä«si raksturoÅ”u tÄs funkcionalitÄti. TÄ Ä¼auj Ätri izpildÄ«t Python kodu attÄlinÄtajÄ maŔīnÄ, un Ansible ir tikai viens no piemÄriem tÄs izmantoÅ”anÄ. Mitogen izmanto UNIX cauruli attÄlinÄtajÄ maŔīnÄ un pÄrsÅ«ta Python kodu, kas ir saspiests ar zlib un sÄrijveidÄ, izmantojot pickle. Tas palÄ«dz to izpildÄ«t ÄtrÄk un ietaupa datu plÅ«smu. Ja jÅ«s interesÄ detalizÄtÄks izskaidrojums, vislabÄk bÅ«tu izlasÄ«t par to lapÄ . TaÄu Å”odien mÄs koncentrÄsimies tikai uz bibliotÄkas darbu ar Ansible.
Mitogen noteiktos apstÄkļos var paÄtrinÄt jÅ«su Ansible kodu vairÄkas reizes un bÅ«tiski samazinÄt datu plÅ«smu. PÄrbaudÄ«sim populÄrÄkos piemÄrus un redzÄsim, cik lielÄ mÄrÄ tas mums palÄ«dz.
Es visvairÄk izmantoju Ansible konfigurÄcijas failu izveidei attÄlinÄtajÄ maŔīnÄ, pakotÅu instalÄÅ”anai, failu pÄrsÅ«tīŔanai uz attÄlinÄto maŔīnu un atpakaļ. VarbÅ«t jums ir citi piemÄri ā uzrakstiet komentÄros.
Aiziet!
Mitogen konfigurÄcija Ansible ir ļoti vienkÄrÅ”a:
InstalÄjam Mitogen bibliotÄku:
pip install mitogenTagad ir divi viena otras lÄ«dzvÄrtÄ«gi veidi ā vai nu iestatÄ«t opcijas ansible.cfg konfigurÄcijas failÄ, vai arÄ« iestatÄ«t nepiecieÅ”amÄs vides mainÄ«gÄs.
PieÅemsim, ka ceļŔ uz instalÄto Mitogen bÅ«s /usr/lib/python2.7/site-packages/ansible_mitogen/plugins/strategy. TÄtad:
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 virtualenv, ar Mitogen un bez tÄ:
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Å emiet vÄrÄ, ka Mitogen 0.2.7 nedarbojas ar Ansible 2.8 (maijÄ 2019)
Izveidojam aliases:
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 playbook, kas izveido failus attÄlinÄtajÄ maŔīnÄ:
---
- hosts: all
gather_facts: false
tasks:
- name: Izveidot failus, izmantojot copy moduli
copy:
content: |
test file {{ item }}
dest: ~\/file_{{ item }}
with_sequence: start=1 end={{ n }}Un palaidÄ«sim ar Mitogen un bez tÄ, 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 uzlabojumu divreiz. PÄrbaudÄ«sim 20, 30, ā¦, 100 failiem:
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.197sKopumÄ mÄs paÄtrinÄjÄm izpildi vairÄk nekÄ 10 reizes!
Tagad mÄÄ£inÄsim dažÄdus scenÄrijus un redzÄsim, cik Ätri viss darbojas:
Failu kopÄÅ”anas scenÄrijs uz attÄlinÄtu hostu no lokÄlÄ (ar moduli
copy):
Failu izveides scenÄrijs attÄlinÄtajÄ hostÄ ar
copymoduli:
Failu lejupielÄdes scenÄrijs no attÄlinÄtÄ hosta uz lokÄlo:
MÄÄ£inÄsim scenÄriju ar vairÄkiem (3) attÄlinÄtiem datoriem, piemÄram, failu kopÄÅ”anas scenÄriju uz attÄlinÄtu hostu:
KÄ redzams, Mitogen ietaupa gan laiku, gan trafiku Å”ajos scenÄrijos. Bet, ja "pudeļu kakls" nav Ansible, bet piemÄram, I\/O diskÄ vai tÄ«klÄ, vai citur, tad ir grÅ«ti gaidÄ«t, ka Mitogen mums palÄ«dzÄs.
MÄÄ£inÄsim scenÄriju ar pakotÅu instalÄÅ”anu, izmantojot yum\/dnf, un python moduļiem, izmantojot pip. Pakotnes tika keÅ”otas, lai nebÅ«tu atkarÄ«gas no tÄ«kla problÄmÄm:
---
- hosts: all
gather_facts: false
tasks:
- name: InstalÄt pakotnes
become: true
package:
name:
- samba
- httpd
- nano
- ruby
state: present
- name: InstalÄt pip moduļus
become: true
pip:
name:
- pytest-split-tests
- bottle
- pep8
- flask
state: present
Ar Mitogen tas aizÅÄma 12 sekundes, tÄpat kÄ bez tÄ.
Lapas sadaÄ¼Ä JÅ«s varat apskatÄ«t citus salÄ«dzinoÅ”os testus un mÄÄ£inÄjumus. KÄ norÄdÄ«ts lapÄ:
Mitogen nevar paÄtrinÄt moduļus, kad tie tiek izpildÄ«ti. Tas var tikai padarÄ«t Ŕī moduļa izpildi ÄtrÄku, cik vien iespÄjams.
TÄdÄļ ir svarÄ«gi atrast savus Å”aurumus izvietoÅ”anas procesÄ, un, ja tie ir saistÄ«ti ar Ansible, Mitogen palÄ«dzÄs jums tos atrisinÄt un bÅ«tiski paÄtrinÄt jÅ«su playbook izpildi.
Avots: habr.com
