Iyara Aṣeṣe pẹlu Mitogen

O ṣee di ọkan ninu awọn julọ gbajumo System iṣeto ni Management. Lẹhin ti ra nipasẹ Red Hat ni 2015 nọmba olukopa ise agbese koja egbegberun ati Ansible di jasi julọ lo imuṣiṣẹ ati orchestration eto. Awọn oniwe-jakejado ibiti o ti ohun elo jẹ gidigidi ìkan.

Ansible ṣiṣẹ lori SSH awọn isopọ to latọna ogun. O ṣii igba SSH kan, wọle, daakọ koodu Python lori nẹtiwọọki ati kọwe si faili igba diẹ lọtọ. Lẹhin iyẹn, o nṣiṣẹ faili yii lori ẹrọ latọna jijin. Gbogbo ọkọọkan ti awọn iṣẹ ṣiṣe jẹ pipẹ ati arẹwẹsi, nitorinaa awọn ọna pupọ lo wa lati mu ilọsiwaju rẹ pọ si.

Ọkan ninu awọn ọna wọnyi ni Awọn opo gigun ti SSH eyiti o fun ọ laaye lati lo igba SSH kan lati ṣiṣẹ awọn ilana, dipo ṣiṣi igba tuntun ni igba kọọkan, eyiti o le fipamọ wa ni akoko pupọ. (O kan ranti lati pa requiretty eto fun sudo ninu rẹ /etc/sudoers faili lori ẹrọ latọna jijin)

Ọna tuntun lati bori Ansible jẹ ile-ikawe Python ti a pe Mitogen. Ti ẹnikẹni ko ba ti gbọ rẹ, Emi yoo ṣe apejuwe iṣẹ rẹ ni ṣoki. O faye gba ipaniyan iyara ti koodu Python lori ẹrọ latọna jijin, ati Ansible jẹ apẹẹrẹ kan ti lilo. Mitogen nlo paipu UNIX kan lori ẹrọ latọna jijin ati gbigbe koodu Python ti fisinuirindigbindigbin pẹlu zlib ati serialized pẹlu pickle. Eyi ṣe iranlọwọ lati pari ni iyara ati fi awọn ijabọ pamọ. Ti o ba nifẹ si alaye alaye diẹ sii, o dara julọ lati ka nipa rẹ lori oju-iwe naa "Bawo ni o ṣe n ṣiṣẹ". Ṣugbọn loni a yoo dojukọ nikan lori bii ile-ikawe naa ṣe n ṣiṣẹ pẹlu Ansible.

Mitogen ni awọn ayidayida kan le mu koodu Ansible rẹ yara ni igba pupọ ati dinku agbara ijabọ ni pataki. Jẹ ki a ṣayẹwo awọn ọran lilo olokiki julọ ki a wo iye ti o ṣe iranlọwọ fun wa.

Mo lo Ansible julọ fun: ṣiṣẹda awọn faili atunto lori ẹrọ latọna jijin, fifi sori ẹrọ awọn idii, didakọ awọn faili si ati lati ẹrọ jijin. Boya o ni awọn apẹẹrẹ miiran - kọ ninu awọn asọye.

Lọ!

Iṣeto Mitogen fun Ansible jẹ rọrun pupọ:
Fi sori ẹrọ ile-ikawe Mitogen:

pip install mitogen

Bayi awọn ọna deede meji lo wa - boya tunto awọn aṣayan ninu faili atunto ansible.cfg, tabi ṣeto awọn oniyipada ayika pataki.

Jẹ ki a ro pe ọna si Mitogen ti a fi sii yoo jẹ /usr/lib/python2.7/site-packages/ansible_mitogen/plugins/strategy. Lẹhinna:

export ANSIBLE_STRATEGY_PLUGINS=/usr/lib/python2.7/site-packages/ansible_mitogen/plugins/strategy
export ANSIBLE_STRATEGY=mitogen_linear

tabi

[defaults]
strategy = mitogen_linear
strategy_plugins = /usr/lib/python2.7/site-packages/ansible_mitogen/plugins/strategy

Jẹ ki a fi sori ẹrọ Ansible ni virtualenv, pẹlu ati laisi 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

Jọwọ ṣe akiyesi pe Mitogen 0.2.7 ko ṣiṣẹ pẹlu Ansible 2.8 (bi ti May 2019)

Ṣiṣe awọn inagijẹ:

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'

Bayi jẹ ki a gbiyanju lati ṣiṣẹ iwe-iṣere kan ti o ṣẹda awọn faili lori ẹrọ latọna jijin:

---
- 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 }}

Ati pe jẹ ki a ṣiṣẹ pẹlu ati laisi Mitogen lati ṣẹda awọn 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

A ri ilọsiwaju 2-agbo. Jẹ ki a ṣayẹwo fun 20, 30, ..., 100 awọn faili:

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

Bi abajade, a yara ipaniyan nipasẹ diẹ sii ju awọn akoko 10 lọ!
Bayi jẹ ki a gbiyanju awọn oju iṣẹlẹ oriṣiriṣi ati wo bii iyara ti ohun gbogbo n ṣiṣẹ fun wa:

  • Iwe afọwọkọ fun didakọ awọn faili si agbalejo latọna jijin lati agbegbe kan (pẹlu module copy):
    Iyara Aṣeṣe pẹlu Mitogen

  • Akosile fun ṣiṣẹda awọn faili lori kan latọna ogun pẹlu copy module:
    Iyara Aṣeṣe pẹlu Mitogen

  • Oju iṣẹlẹ pẹlu gbigba awọn faili lati ọdọ agbalejo latọna jijin si agbegbe kan:
    Iyara Aṣeṣe pẹlu Mitogen

Jẹ ki a gbiyanju oju iṣẹlẹ kan pẹlu ọpọlọpọ awọn ẹrọ jijin (3), fun apẹẹrẹ oju iṣẹlẹ pẹlu didakọ awọn faili si agbalejo latọna jijin:
Iyara Aṣeṣe pẹlu Mitogen

Bi o ti le rii, Mitogen n fipamọ wa ni akoko mejeeji ati ijabọ ni awọn oju iṣẹlẹ wọnyi. Ṣugbọn ti igo ko ba wa ni Ansible, ṣugbọn fun apẹẹrẹ ni I / O ti disk tabi nẹtiwọki, tabi ibomiiran, lẹhinna o ṣoro lati reti pe Mitogen yoo ran wa lọwọ.

Jẹ ki a gbiyanju iwe afọwọkọ kan pẹlu fifi sori ẹrọ awọn idii pẹlu yum/dnf ati awọn modulu Python nipa lilo pip. Awọn idii ti wa ni ipamọ ki o má ba dale lori awọn glitches nẹtiwọki:

---
- 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

Pẹlu Mitogen o gba iṣẹju-aaya 12, kanna bii laisi rẹ.
Lori oju -iwe naa Mitogen fun oju-iwe ti o ṣeeṣe o le wo awọn aṣepari miiran ati awọn idanwo. Bi oju-iwe naa ṣe sọ:

Mitogen ko le titẹ soke awọn module nigba ti o ti wa ni nṣiṣẹ. O le nikan ṣe awọn ipaniyan ti yi module ki sare bi o ti ṣee.

Nitorinaa, o ṣe pataki lati wa awọn igo rẹ ninu imuṣiṣẹ rẹ ati pe ti wọn ba jẹ nitori Ansible, lẹhinna Mitogen yoo ṣe iranlọwọ fun ọ lati yanju wọn ati ni pataki iyara ipaniyan ti awọn iwe-iṣere rẹ.

orisun: www.habr.com

Fi ọrọìwòye kun