Mitogen na-eme ngwa ngwa

Eziokwu ghọrọ otu n'ime ndị kasị ewu ewu Njikwa nhazi usoro. Mgbe Uhie okpu zụtara na 2015 nọmba sonyere oru ngo gafere puku kwuru puku na Ansible aghọọla eleghị anya nke kacha eji ebunye ọrụ na usoro nhazi. Ngwa ya dịgasị iche iche dị oke egwu.

Enwere ike na-arụ ọrụ maka njikọ SSH na ndị ọbịa dịpụrụ adịpụ. Ọ na-emepe nnọkọ SSH, banye, depụta koodu Python na netwọk wee dee ya na faịlụ nwa oge dị iche. Mgbe nke ahụ gasịrị, ọ na-agba faịlụ a na igwe dịpụrụ adịpụ. Usoro ọrụ a dum dị ogologo ma na-agwụ ike, yabụ enwere ụzọ dị iche iche iji bulie ya.

Otu n'ime ụzọ ndị a bụ SSH pipeline nke na-enye gị ohere iji otu nnọkọ SSH mee ntụziaka, kama ịmepe nnọkọ ọhụrụ oge ọ bụla, nke nwere ike ịzọpụta anyị ọtụtụ oge. (Cheta naanị ịgbanyụ requiretty ntọala maka sudo n'ime gị /etc/sudoers faịlụ na igwe dịpụrụ adịpụ)

Ụzọ ọhụrụ a ga-esi mefefe ihe ga-ekwe omume bụ ọba akwụkwọ Python nke a na-akpọ Mitogen. Ọ bụrụ na onye ọ bụla anụbeghị maka ya, m ga-akọwa nkenke ọrụ ya. Ọ na-enye ohere igbu ngwa ngwa nke koodu Python na igwe dịpụrụ adịpụ, yana ike bụ naanị otu ihe atụ nke ojiji. Mitogen na-eji ọkpọkọ UNIX na igwe dịpụrụ adịpụ ma na-ebufe koodu Python nke ejiri zlib abịakọta ma tinye ya na pickle. Nke a na-enyere aka imezu ya ngwa ngwa ma chekwaa okporo ụzọ. Ọ bụrụ na ị nwere mmasị na nkọwa zuru ezu karị, ọ kacha mma ịgụ banyere ya na ibe "Ka o si arụ ọrụ". Mana taa, anyị ga-elekwasị anya naanị ka ụlọ akwụkwọ ahụ si arụ ọrụ na Ansible.

Mitogen n'ọnọdụ ụfọdụ nwere ike mee ka koodu nwere ike mee ngwa ngwa ọtụtụ oge ma belata oriri okporo ụzọ. Ka anyị lelee okwu ikpe ndị kacha ewu ewu wee hụ etu ọ na-enyere anyị aka.

M na-eji ihe kachasị mma maka: ịmepụta faịlụ nhazi na igwe dịpụrụ adịpụ, ịwụnye ngwugwu, na-edegharị faịlụ gaa na site na igwe dịpụrụ adịpụ. Ikekwe ị nwere ihe atụ ndị ọzọ - dee na nkọwa.

Ka anyị gawa!

Nhazi Mitogen maka Ansible dị nnọọ mfe:
Wụnye ọba akwụkwọ Mitogen:

pip install mitogen

Ugbu a enwere ụzọ abụọ nhata - ma hazie nhọrọ na faịlụ nhazi ansible.cfg, ma ọ bụ tọọ mgbanwe gburugburu ebe dị mkpa.

Ka anyị chee na ụzọ Mitogen arụnyere ga-abụ /usr/lib/python2.7/site-packages/ansible_mitogen/plugins/strategy. Mgbe ahụ:

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

ma ọ bụ

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

Ka anyị tinye ike na virtualenv, yana na enweghị 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

Biko mara na Mitogen 0.2.7 anaghị arụ ọrụ na ike 2.8 (dị ka nke Mee 2019)

Na-eme utu aha:

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'

Ugbu a, ka anyị gbalịa ịme akwụkwọ egwuregwu na-emepụta faịlụ na igwe dịpụrụ adịpụ:

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

Ka anyị jiri ya na-enweghị Mitogen mepụta faịlụ 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

Anyị na-ahụ nkwalite ugboro abụọ. Ka anyị lelee faịlụ 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

N'ihi ya, anyị mere ngwa ngwa ogbugbu ihe karịrị ugboro iri!
Ugbu a, ka anyị nwalee ọnọdụ dị iche iche wee hụ etu ihe niile si arụ ọrụ maka anyị ngwa ngwa:

  • Ederede maka idegharị faịlụ gaa na onye ọbịa dịpụrụ adịpụ site na mpaghara (ya na modul copy):
    Mitogen na-eme ngwa ngwa

  • Ederede maka ịmepụta faịlụ na onye ọbịa dịpụrụ adịpụ yana copy modul:
    Mitogen na-eme ngwa ngwa

  • Ọnọdụ dị na nbudata faịlụ site na onye ọbịa dịpụrụ adịpụ gaa na nke mpaghara:
    Mitogen na-eme ngwa ngwa

Ka anyị nwalee ihe atụ nwere ọtụtụ igwe (3) dịpụrụ adịpụ, dịka ọmụmaatụ ihe atụ nwere idegharị faịlụ na onye ọbịa dịpụrụ adịpụ:
Mitogen na-eme ngwa ngwa

Dị ka ị na-ahụ, Mitogen na-azọpụta anyị ma oge na okporo ụzọ na ọnọdụ ndị a. Ma ọ bụrụ na mkpọmkpọ ahụ adịghị na ike, ma dịka ọmụmaatụ na I / O nke diski ma ọ bụ netwọk, ma ọ bụ ebe ọzọ, mgbe ahụ, ọ na-esiri ike ịtụ anya na Mitogen ga-enyere anyị aka.

Ka anyị nwalee edemede nwere ngwungwu ịwụnye yum/dnf na modul Python site na iji pip. A na-echekwa ngwugwu ndị ahụ ka ọ ghara ịdabere na glitches netwọk:

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

Na Mitogen o were 12 sekọnd, otu ihe ahụ na-enweghị ya.
Na ibe Mitogen maka ibe enwere ike ị nwere ike lelee akara nrịbama na ule ndị ọzọ. Dị ka ibe ahụ kwuru:

Mitogen enweghị ike ime ngwa ngwa modul mgbe ọ na-agba ọsọ. Ọ nwere ike ime ka ogbugbu nke modul a dị ngwa ngwa o kwere mee.

Ya mere, ọ dị mkpa ịchọta mkpọmkpọ gị na ntinye gị ma ọ bụrụ na ha bụ n'ihi ihe nwere ike ime, mgbe ahụ Mitogen ga-enyere gị aka dozie ha ma mee ngwa ngwa ngwa ngwa nke akwụkwọ egwu egwu gị.

isi: www.habr.com

Zụta nnabata ntụkwasị obi maka saịtị nwere nchekwa DDoS, sava VPS VDS 🔥 Zụta ebe nrụọrụ weebụ a pụrụ ịtụkwasị obi na nchekwa DDoS, sava VPS VDS | ProHoster