Lezkirina Ansible bi Mitogen re

Ansible bû yek ji herî populer Management Configuration System. Piştî ji hêla Red Hat ve hate kirîn di sala 2015 de hejmara beşdarên projeyê Ji hezaran derbas kir û Ansible dibe ku pergala herî zêde tê bikar anîn saz kirin û orkestrasyonê. Berfirehiya serîlêdanên wê pir bandorker e.

Ansible li ser girêdanên SSH bi mêvandarên dûr re dixebite. Ew danişînek SSH vedike, têkeve, koda Python li ser torê kopî dike û wê li pelek demkî ya cihê dinivîse. Piştî wê, ew vê pelê li ser makîneya dûr dimeşîne. Tevahiya vê rêza operasyonan pir dirêj û bêzar e, ji ber vê yekê awayên cûrbecûr hene ku wê xweşbîn bikin.

Yek ji van rêyan e lûleyên SSH ku destûrê dide te ku hûn yek danişîna SSH-ê bikar bînin da ku talîmatan bicîh bînin, li şûna ku her car danişînek nû vekin, ku dikare gelek wextê me xilas bike. (Tenê ji bîr mekin ku vemirînin requiretty mîhengê ji bo sudo di te /etc/sudoers pelê li ser makîneya dûr)

Rêbazek nû ya zêdekirina Ansible pirtûkxaneyek python e ku jê re tê gotin Mitogen. Ger kesek jê nebihîstiye, ez ê bi kurtî fonksiyona wê vebêjim. Ew destûrê dide darvekirina bilez a koda python li ser makîneyek dûr, û Ansible tenê mînakek karanîna ye. Mitogen li ser makîneya dûr boriyek UNIX bikar tîne û koda python a ku bi zlib hatî komkirin û bi tirşikê serialîzekirî vediguhezîne. Ev ji bo temamkirina wê zûtir dibe alîkar û trafîkê xilas dike. Heke hûn bi ravekek berfirehtir eleqedar in, çêtirîn e ku hûn li ser rûpelê li ser wê bixwînin "Çawa dixebite". Lê îro em ê tenê bala xwe bidin ka pirtûkxane bi Ansible re çawa dixebite.

Mitogen di hin mercan de dikare koda weya Ansible çend caran bilez bike û bi girîngî xerckirina trafîkê kêm bike. Werin em dozên karanîna herî populer binihêrin û bibînin ka ew çiqas ji me re dibe alîkar.

Ez Ansible-ê herî zêde bikar tînim: afirandina pelên veavakirinê li ser makîneyek dûr, sazkirina pakêtan, kopîkirina pelan ji makîneya dûr û jê re. Dibe ku we mînakên din hene - di şîroveyan de binivîsin.

Em herin!

Veavakirina Mitogen ji bo Ansible pir hêsan e:
Pirtûkxaneya Mitogen saz bikin:

pip install mitogen

Naha du awayên hevwate hene - an vebijarkên di pelê veavakirinê de ansible.cfg mîheng bikin, an jî guhêrbarên hawîrdorê yên pêwîst saz bikin.

Ka em bihesibînin ku riya Mitogen-a sazkirî dê bibe /usr/lib/python2.7/site-packages/ansible_mitogen/plugins/strategy. Paşan:

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

an

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

Ka em Ansible li virtualenv, bi Mitogen û bêyî wê saz bikin:

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

Ji kerema xwe not bikin ku Mitogen 0.2.7 bi Ansible 2.8 re naxebite (ji Gulana 2019-an de)

Çêkirina navnav:

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'

Naha em hewl bidin ku pirtûkek lîstikê ku pelan li ser makîneyek dûr diafirîne bimeşîne:

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

Werin em wê bi Mitogen û bêyî wê bimeşînin da ku 10 pelan biafirînin:

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

Em pêşveçûnek 2-qatî dibînin. Ka em 20, 30, ..., 100 pelan kontrol bikin:

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

Di encamê de, me ji 10 caran zêdetir îdamê lezand!
Naha em werin senaryoyên cihêreng biceribînin û bibînin ka her tişt ji bo me çiqas zûtir dixebite:

  • Skrîpta kopîkirina pelan li mêvandarek dûr a herêmî (bi modulê copy):
    Lezkirina Ansible bi Mitogen re

  • Skrîpta ji bo afirandina pelan li ser mêvandarek dûr bi copy module:
    Lezkirina Ansible bi Mitogen re

  • Senaryoya bi daxistina pelan ji mêvandarek dûr a herêmî:
    Lezkirina Ansible bi Mitogen re

Ka em senaryoyek bi çend (3) makîneyên dûr biceribînin, mînakî senaryoyek bi kopîkirina pelan li mêvandarek dûr:
Lezkirina Ansible bi Mitogen re

Wekî ku hûn dibînin, Mitogen di van senaryoyan de hem dem û hem jî trafîkê me xilas dike. Lê heke gemar ne di Ansible de be, lê mînakî di I/O ya dîskek an torê de, an cîhek din be, wê hingê dijwar e ku meriv li bendê be ku Mitogen alîkariya me bike.

Ka em skrîptek bi sazkirina pakêtên bi modulên yum/dnf û python bi karanîna pip biceribînin. Ji bo ku bi xeletiyên torê ve girêdayî nebin, pakêt hatin cach kirin:

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

Bi Mitogen re 12 saniye girt, eynî wek bêyî wê.
Li ser rûpelê Mitogen ji bo rûpela Ansible hûn dikarin li pîvan û ceribandinên din binêrin. Wekî ku rûpel dibêje:

Mitogen nikare modulê dema ku dixebite bilez bike. Ew tenê dikare pêkanîna vê modulê bi qasî ku pêkan zûtir bike.

Ji ber vê yekê, girîng e ku hûn di bicîhkirina xwe de astengên xwe bibînin û ger ew ji ber Ansible bin, wê hingê Mitogen dê ji we re bibe alîkar ku wan çareser bikin û bi girîngî lezkirina darvekirina pirtûkên lîstika we bike.

Source: www.habr.com

Ji bo malperên bi parastina DDoS, serverên VPS VDS mêvandariya pêbawer bikirin 🔥 Hostinga malperê ya pêbawer bi parastina DDoS, serverên VPS VDS bikirin | ProHoster