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 requiretty
setelan pikeun sudo di Anjeun /etc/sudoers
file dina mesin jauh)
Cara anyar pikeun overclock Ansible nyaéta perpustakaan python anu disebut
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
):
-
Script pikeun nyieun file dina host jauh jeung
copy
modul:
-
Skenario sareng ngundeur file tina host jauh ka lokal:
Hayu urang cobian skenario sareng sababaraha (3) mesin jauh, contona skenario nyalin file ka host jauh:
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 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