Ansible virkar yfir SSH tengingar við ytri gestgjafa. Það opnar SSH lotu, skráir sig inn, afritar Python kóðann yfir netið og skrifar hann í sérstaka tímabundna skrá. Eftir það keyrir það þessa skrá á ytri vélinni. Öll þessi röð aðgerða er frekar löng og leiðinleg, svo það eru ýmsar leiðir til að hagræða henni.
Ein af þessum leiðum er requiretty
stilling fyrir sudo í þínu /etc/sudoers
skrá á ytri vélinni)
Ný leið til að yfirklukka Ansible er python bókasafn sem heitir
Mitogen getur við vissar aðstæður flýtt fyrir Ansible kóðanum þínum nokkrum sinnum og dregið verulega úr umferðarnotkun. Við skulum skoða vinsælustu notkunartilvikin og sjá hversu mikið það hjálpar okkur.
Ég nota Ansible mest fyrir: búa til stillingarskrár á ytri vél, setja upp pakka, afrita skrár til og frá ytri vélinni. Kannski hefurðu önnur dæmi - skrifaðu í athugasemdunum.
Við skulum fara!
Mítógen stillingar fyrir Ansible er mjög einföld:
Settu upp Mitogen bókasafnið:
pip install mitogen
Nú eru tvær jafngildar leiðir - annað hvort stilla valkostina í ansible.cfg stillingarskránni, eða stilla nauðsynlegar umhverfisbreytur.
Gerum ráð fyrir að leiðin að uppsettu Mitogen verði /usr/lib/python2.7/site-packages/ansible_mitogen/plugins/strategy
. Þá:
export ANSIBLE_STRATEGY_PLUGINS=/usr/lib/python2.7/site-packages/ansible_mitogen/plugins/strategy
export ANSIBLE_STRATEGY=mitogen_linear
eða
[defaults]
strategy = mitogen_linear
strategy_plugins = /usr/lib/python2.7/site-packages/ansible_mitogen/plugins/strategy
Við skulum setja upp Ansible í virtualenv, með og án 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
Vinsamlegast athugaðu að Mitogen 0.2.7 virkar ekki með Ansible 2.8 (frá og með maí 2019)
Að búa til samheiti:
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'
Nú skulum við reyna að keyra leikbók sem býr til skrár á ytri vél:
---
- 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 }}
Og við skulum keyra það með og án Mitogen til að búa til 10 skrár:
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
Við sjáum tvöfalda framför. Við skulum athuga með 2, 20, ..., 30 skrár:
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
Fyrir vikið flýttum við framkvæmd um meira en 10 sinnum!
Nú skulum við prófa mismunandi aðstæður og sjá hversu miklu hraðar allt virkar fyrir okkur:
-
Forskrift til að afrita skrár á ytri hýsil frá staðbundnum (með einingunni
copy
):
-
Forskrift til að búa til skrár á ytri vél með
copy
mát:
-
Atburðarás með því að hlaða niður skrám frá ytri hýsil til staðbundins:
Við skulum reyna atburðarás með nokkrum (3) fjartengdum vélum, til dæmis atburðarás þar sem skrár eru afritaðar á ytri hýsil:
Eins og þú sérð sparar Mitogen okkur bæði tíma og umferð í þessum aðstæðum. En ef flöskuhálsinn er ekki í Ansible, heldur til dæmis í I/O á diski eða neti, eða einhvers staðar annars staðar, þá er erfitt að búast við því að Mitogen hjálpi okkur.
Prófum skriftu með því að setja upp pakka með yum/dnf og python einingum með því að nota pip. Pakkarnir voru í skyndiminni til að vera ekki háðir netgöllum:
---
- 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
Með Mitogen tók það 12 sekúndur, það sama og án hans.
Á síðunni
Mitogen getur ekki flýtt fyrir einingunni þegar hún er í gangi. Það getur aðeins gert framkvæmd þessarar einingu eins hratt og mögulegt er.
Þess vegna er mikilvægt að finna flöskuhálsana þína í dreifingunni þinni og ef þeir eru vegna Ansible, þá mun Mitogen hjálpa þér að leysa þá og flýta verulega fyrir framkvæmd leikbókanna þinna.
Heimild: www.habr.com