Cyflymu Ansible gyda Mitogen

Ateb daeth yn un o'r rhai mwyaf poblogaidd Rheoli Cyfluniad System... Ar ôl prynwyd gan Red Hat yn 2015 y nifer cyfranogwyr y prosiect rhagori ar filoedd ac mae'n debyg mai Ansible oedd y system lleoli ac offeryniaeth a ddefnyddiwyd fwyaf. Mae ei ystod eang o gymwysiadau yn drawiadol iawn.

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 Piblinellau SSH sy'n eich galluogi i ddefnyddio un sesiwn SSH i weithredu cyfarwyddiadau, yn hytrach nag agor sesiwn newydd bob tro, a all arbed llawer o amser i ni. (Cofiwch ddiffodd 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 Mitogen. Os nad oes unrhyw un wedi clywed amdano, byddaf yn disgrifio ei ymarferoldeb yn fyr. Mae'n caniatáu gweithredu cod python yn gyflym ar beiriant anghysbell, a dim ond un enghraifft o ddefnydd yw Ansible. Mae Mitogen yn defnyddio pibell UNIX ar y peiriant anghysbell ac yn trosglwyddo cod python wedi'i gywasgu â zlib a'i gyfresoli â phicl. Mae hyn yn helpu i'w gwblhau'n gyflymach ac yn arbed traffig. Os oes gennych ddiddordeb mewn esboniad manylach, mae'n well darllen amdano ar y dudalen "Sut mae'n gweithio". Ond heddiw byddwn yn canolbwyntio'n unig ar sut mae'r llyfrgell yn gweithio gydag Ansible.

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):
    Cyflymu Ansible gyda Mitogen

  • Sgript ar gyfer creu ffeiliau ar westeiwr o bell gyda copy modiwl:
    Cyflymu Ansible gyda Mitogen

  • Senario gyda lawrlwytho ffeiliau o westeiwr anghysbell i un lleol:
    Cyflymu Ansible gyda Mitogen

Gadewch i ni roi cynnig ar senario gyda sawl (3) o beiriannau anghysbell, er enghraifft senario gyda chopïo ffeiliau i westeiwr anghysbell:
Cyflymu Ansible gyda Mitogen

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 Mitogen ar gyfer tudalen Ansible gallwch edrych ar feincnodau a phrofion eraill. Fel y dywed y 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

Ychwanegu sylw