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 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
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 mitogen
Tagad 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_linear
vai
[defaults]
strategy = mitogen_linear
strategy_plugins = /usr/lib/python2.7/site-packages/ansible_mitogen/plugins/strategy
InstalÄ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.10
LÅ«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.643s
MÄ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.197s
RezultÄ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
copy
modulis:
-
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Ä
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