Ansible nagtrabaho sa mga koneksyon sa SSH sa hilit nga mga host. Nag-abli kini og sesyon sa SSH, nag-log in, nagkopya sa Python code sa network ug gisulat kini sa bulag nga temporaryo nga file. Pagkahuman niana, gipadagan kini nga file sa hilit nga makina. Kini nga tibuuk nga han-ay sa mga operasyon medyo taas ug kapoy, mao nga adunay lainlaing mga paagi aron ma-optimize kini.
Usa niini nga mga paagi mao ang requiretty
setting para sa sudo sa imong /etc/sudoers
file sa hilit nga makina)
Usa ka bag-ong paagi sa pag-overclock sa Ansible usa ka librarya sa python nga gitawag
Ang Mitogen sa pipila ka mga kahimtang makapadali sa imong Ansible code sa makadaghang higayon ug makapakunhod pag-ayo sa konsumo sa trapiko. Atong tan-awon ang pinakasikat nga mga kaso sa paggamit ug tan-awon kon unsa ka dako kini sa pagtabang kanato.
Gigamit nako ang Ansible sa kadaghanan para sa: paghimo sa mga file sa pag-configure sa usa ka hilit nga makina, pag-install sa mga pakete, pagkopya sa mga file ngadto ug gikan sa hilit nga makina. Tingali adunay ka ubang mga pananglitan - isulat sa mga komento.
Tana!
Ang pagsumpo sa mitogen alang sa Ansible yano ra:
I-install ang librarya sa Mitogen:
pip install mitogen
Karon adunay duha ka managsama nga mga paagi - mahimo nga i-configure ang mga kapilian sa ansible.cfg configuration file, o itakda ang gikinahanglan nga mga variable sa palibot.
Atong hunahunaon nga ang agianan padulong sa na-install nga Mitogen /usr/lib/python2.7/site-packages/ansible_mitogen/plugins/strategy
. unya:
export ANSIBLE_STRATEGY_PLUGINS=/usr/lib/python2.7/site-packages/ansible_mitogen/plugins/strategy
export ANSIBLE_STRATEGY=mitogen_linear
o
[defaults]
strategy = mitogen_linear
strategy_plugins = /usr/lib/python2.7/site-packages/ansible_mitogen/plugins/strategy
Atong i-install ang Ansible sa virtualenv, nga adunay ug wala ang 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
Palihug timan-i nga ang Mitogen 0.2.7 dili molihok sa Ansible 2.8 (sa Mayo 2019)
Paghimo og mga 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'
Karon atong sulayan ang pagpadagan sa usa ka playbook nga nagmugna og mga file sa usa ka hilit nga makina:
---
- 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 }}
Ug atong padaganon kini uban ug wala ang Mitogen aron makahimo og 10 ka mga 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
Nakita namon ang 2 ka pilo nga pag-uswag. Atong susihon ang 20, 30, ..., 100 nga mga 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
Ingon usa ka sangputanan, gipadali namon ang pagpatay sa kapin sa 10 ka beses!
Karon atong sulayan ang lainlaing mga senaryo ug tan-awon kung unsa ka paspas ang tanan alang kanato:
-
Script alang sa pagkopya sa mga file ngadto sa usa ka hilit nga host gikan sa usa ka lokal (uban ang module
copy
):
-
Script alang sa paghimo og mga file sa usa ka hilit nga host nga adunay
copy
module:
-
Scenario sa pag-download sa mga file gikan sa usa ka hilit nga host ngadto sa usa ka lokal:
Atong sulayan ang usa ka senaryo nga adunay daghang (3) hilit nga mga makina, pananglitan usa ka senaryo nga adunay pagkopya sa mga file sa usa ka hilit nga host:
Sama sa imong nakita, ang Mitogen nagluwas kanamo sa oras ug trapiko sa kini nga mga senaryo. Apan kung ang bottleneck wala sa Ansible, apan pananglitan sa I / O sa usa ka disk o network, o bisan asa, nan lisud ang pagdahum nga ang Mitogen makatabang kanato.
Atong sulayan ang usa ka script nga adunay pag-install sa mga pakete nga adunay yum/dnf ug mga module sa python gamit ang pip. Ang mga pakete gi-cache aron dili magdepende sa mga glitches sa network:
---
- 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
Uban sa Mitogen mikuha kini og 12 segundos, sama sa wala niini.
Sa panid
Ang Mitogen dili makapadali sa module kung kini nagdagan. Makahimo lamang kini sa pagpatuman niini nga modyul nga labing paspas kutob sa mahimo.
Busa, hinungdanon nga makit-an ang imong mga bottleneck sa imong pag-deploy ug kung kini tungod sa Ansible, nan ang Mitogen motabang kanimo sa pagsulbad niini ug labi nga mapadali ang pagpatuman sa imong mga playbook.
Source: www.habr.com