Mae Ansible yn gweithio dros gysylltiadau SSH â gwesteiwyr o bell. Mae'n agor sesiwn SSH, yn mewngofnodi, yn copïo'r cod Python dros y rhwydwaith ac yn ei ysgrifennu i ffeil dros dro ar wahân. Ar ôl hynny, mae'n rhedeg y ffeil hon ar y peiriant anghysbell. Mae'r dilyniant cyfan hwn o weithrediadau yn eithaf hir a diflas, felly mae yna wahanol ffyrdd i'w optimeiddio.
Un o'r ffyrdd hyn yw requiretty
gosodiad ar gyfer sudo yn eich /etc/sudoers
ffeil ar y peiriant o bell)
Ffordd newydd o or-glocio Ansible yw llyfrgell python o'r enw
Gall mitogen mewn rhai amgylchiadau gyflymu eich cod Ansible sawl gwaith a lleihau'r defnydd o draffig yn sylweddol. Gadewch i ni edrych ar yr achosion defnydd mwyaf poblogaidd a gweld faint mae'n ein helpu ni.
Rwy'n defnyddio Ansible fwyaf ar gyfer: creu ffeiliau ffurfweddu ar beiriant anghysbell, gosod pecynnau, copïo ffeiliau i'r peiriant anghysbell ac oddi yno. Efallai bod gennych chi enghreifftiau eraill - ysgrifennwch y sylwadau.
Gadewch i ni fynd!
Mae cyfluniad mitogen ar gyfer Ansible yn syml iawn:
Gosod y llyfrgell Mitogen:
pip install mitogen
Nawr mae dwy ffordd gyfatebol - naill ai ffurfweddu'r opsiynau yn y ffeil ffurfweddu ansible.cfg, neu osod y newidynnau amgylchedd angenrheidiol.
Gadewch i ni dybio y bydd y llwybr i'r Mitogen gosod /usr/lib/python2.7/site-packages/ansible_mitogen/plugins/strategy
. Yna:
export ANSIBLE_STRATEGY_PLUGINS=/usr/lib/python2.7/site-packages/ansible_mitogen/plugins/strategy
export ANSIBLE_STRATEGY=mitogen_linear
neu
[defaults]
strategy = mitogen_linear
strategy_plugins = /usr/lib/python2.7/site-packages/ansible_mitogen/plugins/strategy
Gadewch i ni osod Ansible yn virtualenv, gyda a heb 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
Sylwch nad yw Mitogen 0.2.7 yn gweithio gydag Ansible 2.8 (o fis Mai 2019)
Gwneud arallenwau:
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'
Nawr, gadewch i ni geisio rhedeg llyfr chwarae sy'n creu ffeiliau ar beiriant anghysbell:
---
- 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 }}
A gadewch i ni ei redeg gyda a heb Mitogen i greu 10 ffeil:
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
Rydym yn gweld gwelliant deublyg. Gadewch i ni wirio am 2, 20, ..., 30 o ffeiliau:
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
O ganlyniad, fe wnaethom gyflymu'r gweithredu fwy na 10 gwaith!
Nawr, gadewch i ni roi cynnig ar wahanol senarios a gweld faint yn gyflymach mae popeth yn gweithio i ni:
-
Sgript ar gyfer copïo ffeiliau i westeiwr pell o un lleol (gyda'r modiwl
copy
):
-
Sgript ar gyfer creu ffeiliau ar westeiwr o bell gyda
copy
modiwl:
-
Senario gyda lawrlwytho ffeiliau o westeiwr anghysbell i un lleol:
Gadewch i ni roi cynnig ar senario gyda sawl (3) o beiriannau anghysbell, er enghraifft senario gyda chopïo ffeiliau i westeiwr anghysbell:
Fel y gallwch weld, mae Mitogen yn arbed amser a thraffig i ni yn y senarios hyn. Ond os nad yw’r dagfa yn Ansible, ond er enghraifft yn I/O disg neu rwydwaith, neu rywle arall, yna mae’n anodd disgwyl y bydd Mitogen yn ein helpu.
Gadewch i ni roi cynnig ar sgript gyda gosod pecynnau gyda modiwlau yum / dnf a python gan ddefnyddio pip. Cafodd y pecynnau eu storio er mwyn peidio â dibynnu ar glitches rhwydwaith:
---
- 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
Gyda Mitogen cymerodd 12 eiliad, yr un peth â hebddo.
Ar dudalen
Ni all Mitogen gyflymu'r modiwl pan fydd yn rhedeg. Dim ond mor gyflym â phosibl y gall wneud gweithrediad y modiwl hwn.
Felly, mae'n bwysig dod o hyd i'ch tagfeydd yn eich defnydd ac os ydynt oherwydd Ansible, yna bydd Mitogen yn eich helpu i'w datrys a chyflymu gweithrediad eich llyfrau chwarae yn sylweddol.
Ffynhonnell: hab.com