Ansible hufanya kazi kupitia miunganisho ya SSH kwa seva pangishi za mbali. Inafungua kikao cha SSH, inaingia, inakili nambari ya Python kwenye mtandao na kuiandika kwa faili tofauti ya muda. Baada ya hayo, inaendesha faili hii kwenye mashine ya mbali. Mlolongo huu wote wa utendakazi ni mrefu na wa kuchosha, kwa hivyo kuna njia mbalimbali za kuuboresha.
Moja ya njia hizi ni requiretty
kuweka kwa sudo katika yako /etc/sudoers
faili kwenye mashine ya mbali)
Njia mpya ya overclock Ansible ni maktaba ya python inayoitwa
Mitogen katika hali fulani inaweza kuongeza kasi ya nambari yako ya Ansible mara kadhaa na kupunguza kwa kiasi kikubwa matumizi ya trafiki. Wacha tuangalie kesi maarufu za utumiaji na tuone ni kiasi gani inatusaidia.
Ninatumia Ansible zaidi kwa: kuunda faili za usanidi kwenye mashine ya mbali, kusanikisha vifurushi, kunakili faili kwenda na kutoka kwa mashine ya mbali. Labda unayo mifano mingine - andika kwenye maoni.
Hebu kwenda!
Usanidi wa Mitogen kwa Ansible ni rahisi sana:
Sakinisha maktaba ya Mitogen:
pip install mitogen
Sasa kuna njia mbili zinazofanana - ama kusanidi chaguo katika faili ya usanidi ya ansible.cfg, au kuweka vigezo muhimu vya mazingira.
Wacha tufikirie kuwa njia ya Mitogen iliyosanikishwa itakuwa /usr/lib/python2.7/site-packages/ansible_mitogen/plugins/strategy
. Kisha:
export ANSIBLE_STRATEGY_PLUGINS=/usr/lib/python2.7/site-packages/ansible_mitogen/plugins/strategy
export ANSIBLE_STRATEGY=mitogen_linear
au
[defaults]
strategy = mitogen_linear
strategy_plugins = /usr/lib/python2.7/site-packages/ansible_mitogen/plugins/strategy
Wacha tusakinishe Ansible katika virtualenv, pamoja na bila 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
Tafadhali kumbuka kuwa Mitogen 0.2.7 haifanyi kazi na Ansible 2.8 (kuanzia Mei 2019)
Kufanya lakabu:
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'
Sasa hebu tujaribu kuendesha kitabu cha kucheza ambacho huunda faili kwenye mashine ya mbali:
---
- 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 }}
Na wacha tuiendeshe na bila Mitogen kuunda faili 10:
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
Tunaona uboreshaji wa mara 2. Wacha tuangalie faili 20, 30, ..., 100:
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
Kwa hivyo, tuliharakisha utekelezaji kwa zaidi ya mara 10!
Sasa hebu tujaribu hali tofauti na tuone jinsi kila kitu kinavyofanya kazi kwa haraka zaidi:
-
Hati ya kunakili faili kwa seva pangishi ya mbali kutoka ya ndani (pamoja na moduli
copy
):
-
Hati ya kuunda faili kwenye seva pangishi ya mbali na
copy
moduli:
-
Hali ya kupakua faili kutoka kwa seva pangishi ya mbali hadi ya ndani:
Wacha tujaribu hali na mashine kadhaa (3) za mbali, kwa mfano hali ya kunakili faili kwa mwenyeji wa mbali:
Kama unavyoona, Mitogen hutuokoa wakati na trafiki katika hali hizi. Lakini ikiwa chupa haiko katika Ansible, lakini kwa mfano katika I / O ya diski au mtandao, au mahali pengine, basi ni vigumu kutarajia kwamba Mitogen itatusaidia.
Wacha tujaribu maandishi na kusanikisha vifurushi na moduli za yum/dnf na python kwa kutumia bomba. Vifurushi vilihifadhiwa ili zisitegemee hitilafu za mtandao:
---
- 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
Na Mitogen ilichukua sekunde 12, sawa na bila hiyo.
Kwenye ukurasa
Mitogen haiwezi kuharakisha moduli wakati inafanya kazi. Inaweza tu kufanya utekelezaji wa moduli hii haraka iwezekanavyo.
Kwa hiyo, ni muhimu kupata vikwazo vyako katika kupelekwa kwako na ikiwa ni kutokana na Ansible, basi Mitogen itakusaidia kutatua na kuharakisha kwa kiasi kikubwa utekelezaji wa vitabu vyako vya kucheza.
Chanzo: mapenzi.com