Ngagancangkeun Ansible sareng Mitogen

Ansible jadi salah sahiji nu pang populerna Manajemén Konfigurasi Sistim. Sanggeus ieu dibeuli ku Red Hat dina 2015 jumlah pamilon proyék ngaleuwihan rébuan sarta Ansible jadi meureun nu deployment na orchestration sistem panglobana dipaké. Na rupa-rupa aplikasi pisan impressive.

Ansible dianggo dina sambungan SSH ka host jauh. Éta muka sési SSH, log in, nyalin kode Python dina jaringan sareng nyerat kana file samentawis anu misah. Saatos éta, éta ngajalankeun file ieu dina mesin jauh. Sakabeh runtuyan operasi ieu rada panjang tur tedious, jadi aya sababaraha cara pikeun ngaoptimalkeun eta.

Salah sahiji cara ieu Saluran pipa SSH nu ngidinan Anjeun pikeun make hiji sési SSH pikeun ngaéksekusi parentah, tinimbang muka sési anyar unggal waktu, nu bisa ngahemat kami loba waktu. (Ngan émut pikeun mareuman requiretty setelan pikeun sudo di Anjeun /etc/sudoers file dina mesin jauh)

Cara anyar pikeun overclock Ansible nyaéta perpustakaan python anu disebut Mitogén. Upami aya anu teu acan ngupingkeun éta, kuring bakal ngajelaskeun sakedap pungsionalitasna. Hal ieu ngamungkinkeun palaksanaan gancang kode python dina mesin jauh, sarta Ansible ngan hiji conto pamakéan. Mitogen ngagunakeun pipa UNIX dina mesin jauh jeung mindahkeun kode python dikomprés kalawan zlib na serialized kalawan acar. Ieu mantuan pikeun ngarengsekeun eta leuwih gancang sarta ngaheéat lalulintas. Upami anjeun kabetot dina katerangan anu langkung rinci, langkung saé maca ngeunaan éta dina halaman éta "Kumaha gawéna". Tapi ayeuna urang bakal difokuskeun ngan kumaha perpustakaan jalan kalawan Ansible.

Mitogen dina kaayaan nu tangtu bisa nyepetkeun kode Ansible anjeun sababaraha kali tur nyata ngurangan konsumsi lalulintas. Hayu urang parios kasus pamakean anu pang populerna sareng tingali sabaraha éta ngabantosan urang.

Kuring make Ansible paling pikeun: nyieun file konfigurasi dina mesin jauh, masang bungkusan, nyalin file ka sareng ti mesin jauh. Panginten anjeun gaduh conto sanés - tulis dina koméntar.

Hayu urang balik!

Konfigurasi mitogen pikeun Ansible saderhana pisan:
Pasang perpustakaan Mitogen:

pip install mitogen

Ayeuna aya dua cara anu sami - boh ngonpigurasikeun pilihan dina file konfigurasi ansible.cfg, atanapi nyetél variabel lingkungan anu diperyogikeun.

Hayu urang nganggap yén jalur ka Mitogen dipasang bakal /usr/lib/python2.7/site-packages/ansible_mitogen/plugins/strategy. Saterusna:

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

atawa

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

Hayu urang pasang Ansible dina virtualenv, sareng sareng tanpa 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

Punten dicatet yén Mitogen 0.2.7 henteu tiasa dianggo sareng Ansible 2.8 (sapertos Mei 2019)

Nyieun alias:

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'

Ayeuna hayu urang coba ngajalankeun playbook anu nyiptakeun file dina mesin jauh:

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

Sareng hayu urang ngajalankeun éta sareng sareng tanpa Mitogen pikeun nyiptakeun 10 file:

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

Urang ningali pamutahiran 2-melu. Hayu urang pariksa 20, 30, ..., 100 file:

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

Hasilna, urang ngagancangkeun palaksanaan ku leuwih ti 10 kali!
Ayeuna hayu urang cobian skenario anu béda sareng tingali sabaraha langkung gancang sadayana tiasa dianggo pikeun urang:

  • Skrip pikeun nyalin file ka host jauh ti lokal (kalayan modul copy):
    Ngagancangkeun Ansible sareng Mitogen

  • Script pikeun nyieun file dina host jauh jeung copy modul:
    Ngagancangkeun Ansible sareng Mitogen

  • Skenario sareng ngundeur file tina host jauh ka lokal:
    Ngagancangkeun Ansible sareng Mitogen

Hayu urang cobian skenario sareng sababaraha (3) mesin jauh, contona skenario nyalin file ka host jauh:
Ngagancangkeun Ansible sareng Mitogen

Sakumaha anjeun tiasa tingali, Mitogen ngahemat waktos sareng lalu lintas dina skenario ieu. Tapi lamun bottleneck nu teu di Ansible, tapi contona dina I / O tina disk atawa jaringan, atawa tempat sejenna, mangka hese nyangka yén Mitogen bakal nulungan urang.

Hayu urang cobian skrip sareng masang bungkusan nganggo modul yum/dnf sareng python nganggo pip. Bungkusan di-cache supados henteu gumantung kana gangguan jaringan:

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

Kalawan Mitogen butuh 12 detik, sarua jeung tanpa eta.
Dina halaman Mitogen pikeun kaca Ansible anjeun tiasa ningali tolok ukur sareng tés anu sanés. Salaku kaca nyatakeun:

Mitogen teu tiasa nyepetkeun modul nalika dijalankeun. Éta ngan ukur tiasa ngalaksanakeun palaksanaan modul ieu sagancangna.

Ku sabab éta, penting pikeun mendakan bottlenecks anjeun dina panyebaran anjeun sareng upami éta disababkeun ku Ansible, maka Mitogen bakal ngabantosan anjeun ngabéréskeunana sareng sacara signifikan nyepetkeun palaksanaan playbook anjeun.

sumber: www.habr.com

Tambahkeun komentar