Ukusheshisa i-Ansible nge-Mitogen

Ansible yaba enye ethandwa kakhulu Ukuphathwa Kokucushwa Kwesistimu. Ngemva yathengwa yiRed Hat ngo-2015 inombolo abahlanganyeli bephrojekthi yeqa izinkulungwane futhi i-Ansible yaba cishe uhlelo olusetshenziswa kakhulu lokusatshalaliswa nolwe-orchestration. Ububanzi bayo bezinhlelo zokusebenza buhlaba umxhwele kakhulu.

I-Ansible isebenza ngoxhumo lwe-SSH kubasingathi berimothi. Ivula iseshini ye-SSH, ingene, ikopishe ikhodi ye-Python phezu kwenethiwekhi bese iyibhala efayeleni lesikhashana elihlukile. Ngemva kwalokho, isebenzisa leli fayela emshinini wesilawuli kude. Lonke lolu chungechunge lwemisebenzi lude kakhulu futhi luyakhathaza, ngakho-ke kunezindlela ezahlukahlukene zokuwenza ube mkhulu.

Enye yalezi zindlela Amapayipi we-SSH okukuvumela ukuthi usebenzise iseshini eyodwa ye-SSH ukwenza imiyalo, kunokuvula iseshini entsha isikhathi ngasinye, okungasilondolozela isikhathi esiningi. (Khumbula nje ukucisha requiretty ukusetha i-sudo kweyakho /etc/sudoers ifayela emshinini wesilawuli kude)

Indlela entsha yokweqa i-Ansible umtapo wezincwadi we-python obizwa I-Mitogen. Uma kukhona ongakaze ezwe ngakho, ngizochaza kafushane ukusebenza kwayo. Ivumela ukukhishwa okusheshayo kwekhodi ye-python emshinini oqhelile, futhi i-Ansible iyisibonelo esisodwa sokusebenzisa. I-Mitogen isebenzisa ipayipi le-UNIX emshinini oqhelile futhi idlulisa ikhodi ye-python ecindezelwe nge-zlib futhi ifakwe ku-pickle. Lokhu kusiza ukuyiqeda ngokushesha futhi konga ithrafikhi. Uma unesithakazelo encazelweni enemininingwane eminingi, kungcono ukufunda ngayo ekhasini "Isebenza kanjani". Kodwa namuhla sizogxila kuphela endleleni umtapo wolwazi osebenza ngayo ne-Ansible.

I-Mitogen ezimeni ezithile ingasheshisa ikhodi yakho ye-Ansible izikhathi ezimbalwa futhi yehlise kakhulu ukusetshenziswa kwethrafikhi. Ake sihlole izimo zokusetshenziswa ezidume kakhulu futhi sibone ukuthi zisisiza kangakanani.

Ngisebenzisa i-Ansible kakhulu ukwenza lokhu: ukudala amafayela okulungiselela emshinini oqhelile, ukufaka amaphakheji, ukukopisha amafayela ukuya nokusuka emshinini oqhelile. Mhlawumbe unezinye izibonelo - bhala kumazwana.

Hamba!

Ukucushwa kwe-Mitogen kwe-Ansible kulula kakhulu:
Faka ilabhulali ye-Mitogen:

pip install mitogen

Manje kunezindlela ezimbili ezifanayo - noma ulungise izinketho kufayela lokumisa elithi ansible.cfg, noma usethe okuguquguqukayo kwemvelo okudingekayo.

Ake sicabange ukuthi indlela eya ku-Mitogen efakiwe izoba /usr/lib/python2.7/site-packages/ansible_mitogen/plugins/strategy. Bese:

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

noma

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

Masifake i-Ansible ku-virtualenv, nge-Mitogen nangaphandle kwayo:

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

Sicela uqaphele ukuthi i-Mitogen 0.2.7 ayisebenzi ne-Ansible 2.8 (kusukela ngoMeyi 2019)

Ukwenza iziteketiso:

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'

Manje ake sizame ukusebenzisa ibhuku lokudlala elidala amafayela emshinini oqhelile:

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

Futhi masiyiqhube nge-Mitogen nangaphandle ukudala amafayela ayi-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

Sibona ukuthuthuka okuphindwe kabili. Ake sihlole amafayela angu-2, 20, ..., 30:

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

Ngenxa yalokho, sasheshisa ukubulawa izikhathi ezingaphezu kwezingu-10!
Manje ake sizame izimo ezihlukene futhi sibone ukuthi yonke into isisebenzela ngokushesha kangakanani:

  • Iskripthi sokukopisha amafayela kumsingathi oqhelile ukusuka kwewasendaweni (ngemojula copy):
    Ukusheshisa i-Ansible nge-Mitogen

  • Iskripthi sokudala amafayela kumsingathi wesilawuli kude nge copy imojuli:
    Ukusheshisa i-Ansible nge-Mitogen

  • Isimo sokudawuniloda amafayela kusuka kubasingathi berimothi kuya kweyasendaweni:
    Ukusheshisa i-Ansible nge-Mitogen

Ake sizame isimo ngemishini embalwa (3) ekude, isibonelo isimo sokukopisha amafayela kumsingathi oqhelile:
Ukusheshisa i-Ansible nge-Mitogen

Njengoba ubona, i-Mitogen isisindisa kokubili isikhathi nethrafikhi kulezi zimo. Kodwa uma ibhodlela lingekho ku-Ansible, kodwa isibonelo ku-I / O yediski noma inethiwekhi, noma kwenye indawo, khona-ke kunzima ukulindela ukuthi i-Mitogen izosisiza.

Ake sizame iskripthi ngokufaka amaphakheji anamamojula we-yum/dnf kanye ne-python sisebenzisa i-pip. Amaphakheji agcinwe kunqolobane ukuze anganciki kumaphutha enethiwekhi:

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

Nge-Mitogen kuthathe imizuzwana engu-12, efanayo nangaphandle kwayo.
Ekhasini I-Mitogen yekhasi le-Ansible ungabheka amanye amabhentshimakhi nokuhlolwa. Njengoba ikhasi lisho:

I-Mitogen ayikwazi ukusheshisa imojuli uma isebenza. Ingenza kuphela ukwenziwa kwale mojula kusheshe ngangokunokwenzeka.

Ngakho-ke, kubalulekile ukuthola izingqinamba zakho ekusetshenzisweni kwakho futhi uma kungenxa ye-Ansible, i-Mitogen izokusiza ukuxazulula futhi isheshise ngokuphawulekayo ukwenziwa kwezincwadi zakho zokudlala.

Source: www.habr.com

Engeza amazwana