Nyepetake Ansible karo Mitogen

Ansible dadi salah siji sing paling populer Manajemen Konfigurasi Sistem. Sawise dituku dening Red Hat ing 2015 nomer peserta proyek ngluwihi ewu lan Ansible dadi mbokmenawa penyebaran paling akeh digunakake lan sistem orkestrasi. Sawijining sawetara saka sudhut aplikasi banget nyengsemaken.

Ansible dianggo liwat sambungan SSH menyang host remot. Mbukak sesi SSH, mlebu, nyalin kode Python liwat jaringan lan nulis menyang file sementara sing kapisah. Sawisé iku, mbukak file iki ing mesin remot. Kabeh urutan operasi iki cukup dawa lan mboseni, mula ana macem-macem cara kanggo ngoptimalake.

Salah sawijining cara yaiku Pipa SSH sing ngidini sampeyan nggunakake siji sesi SSH kanggo nglakokake instruksi, tinimbang mbukak sesi anyar saben wektu, sing bisa ngirit wektu akeh. (Cukup elinga kanggo mateni requiretty setelan kanggo sudo ing /etc/sudoers file ing mesin remot)

Cara anyar kanggo overclock Ansible yaiku perpustakaan python sing diarani Mitogen. Yen ana sing durung krungu, aku bakal nerangake kanthi ringkes fungsine. Iki ngidini eksekusi kode python kanthi cepet ing mesin remot, lan Ansible minangka salah sawijining conto panggunaan. Mitogen nggunakake pipa UNIX ing mesin remot lan nransfer kode python sing dikompres karo zlib lan serial karo pickle. Iki mbantu ngrampungake kanthi luwih cepet lan ngirit lalu lintas. Yen sampeyan kasengsem ing panjelasan luwih rinci, iku paling apik kanggo maca babagan ing kaca "Carane kerjane". Nanging dina iki kita bakal fokus mung babagan cara kerja perpustakaan karo Ansible.

Mitogen ing kahanan tartamtu bisa nyepetake kode Ansible kaping pirang-pirang lan nyuda konsumsi lalu lintas kanthi signifikan. Ayo dipriksa kasus panggunaan sing paling populer lan deleng kepiye mbantu kita.

Aku nggunakake Ansible paling kanggo: nggawe file konfigurasi ing mesin remot, nginstal paket, nyalin file menyang lan saka mesin remot. Mungkin sampeyan duwe conto liyane - tulis ing komentar.

Ayo ayo!

Konfigurasi mitogen kanggo Ansible gampang banget:
Instal perpustakaan Mitogen:

pip install mitogen

Saiki ana rong cara sing padha - salah siji ngatur opsi ing file konfigurasi ansible.cfg, utawa nyetel variabel lingkungan sing perlu.

Ayo dadi nganggep yen path menyang Mitogen diinstal bakal /usr/lib/python2.7/site-packages/ansible_mitogen/plugins/strategy. banjur:

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

utawa

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

Ayo nginstal Ansible ing virtualenv, kanthi lan 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

Elinga yen Mitogen 0.2.7 ora bisa digunakake karo Ansible 2.8 (mula Mei 2019)

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

Saiki ayo nyoba mbukak playbook sing nggawe file ing mesin remot:

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

Lan ayo mbukak nganggo lan tanpa Mitogen kanggo nggawe 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

We ndeleng dandan 2-melu. Ayo mriksa file 20, 30, ..., 100:

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

Akibaté, kita nyepetake eksekusi luwih saka 10 kaping!
Saiki ayo nyoba macem-macem skenario lan deleng sepira luwih cepet kabeh bisa digunakake kanggo kita:

  • Skrip kanggo nyalin file menyang host remot saka sing lokal (kanthi modul copy):
    Nyepetake Ansible karo Mitogen

  • Script kanggo nggawe file ing host remot karo copy modul:
    Nyepetake Ansible karo Mitogen

  • Skenario kanthi ngundhuh file saka host remot menyang sing lokal:
    Nyepetake Ansible karo Mitogen

Coba skenario karo sawetara (3) mesin remot, contone skenario nyalin file menyang host remot:
Nyepetake Ansible karo Mitogen

Kaya sing sampeyan ngerteni, Mitogen ngirit wektu lan lalu lintas ing skenario kasebut. Nanging yen bottleneck ora ana ing Ansible, nanging contone ing I / O saka disk utawa jaringan, utawa nang endi wae liya, banjur iku hard kanggo nyana yen Mitogen bakal bantuan kita.

Ayo nyoba skrip kanthi nginstal paket nganggo modul yum/dnf lan python nggunakake pip. Paket kasebut di-cache supaya ora gumantung ing 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

Kanthi Mitogen butuh 12 detik, padha karo tanpa.
Ing kaca Mitogen kanggo kaca Ansible sampeyan bisa ndeleng pathokan lan tes liyane. Minangka kaca kasebut:

Mitogen ora bisa nyepetake modul nalika lagi mlaku. Mung bisa nggawe eksekusi modul iki kanthi cepet.

Mula, penting kanggo nemokake kemacetan ing panyebaran sampeyan lan yen ana amarga Ansible, Mitogen bakal mbantu sampeyan ngatasi lan nyepetake eksekusi playbook sampeyan.

Source: www.habr.com

Tuku hosting sing dipercaya kanggo situs kanthi proteksi DDoS, server VPS VDS 🔥 Tuku hosting situs web sing bisa dipercaya nganggo proteksi DDoS, server VPS VDS | ProHoster