nahimong usa sa labing inila ... Pagkahuman sa 2015 ang gidaghanon milapas sa libu-libo ug ang Ansible tingali ang labing gigamit nga sistema sa pag-deploy ug orkestra. Ang halapad nga mga aplikasyon niini impresibo kaayo.
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 nga nagtugot kanimo sa paggamit sa usa ka sesyon sa SSH aron ipatuman ang mga panudlo, imbes nga magbukas ug bag-ong sesyon matag higayon, nga makaluwas kanamo daghang oras. (Hinumdomi lang nga i-off 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 . Kung adunay bisan kinsa nga wala makadungog bahin niini, akong ihulagway sa kadali ang pagpaandar niini. Gitugotan niini ang paspas nga pagpatuman sa code sa python sa usa ka hilit nga makina, ug ang Ansible usa ra ka pananglitan sa paggamit. Ang Mitogen naggamit ug UNIX nga tubo sa hilit nga makina ug gibalhin ang code sa python nga gi-compress sa zlib ug gi-serialize sa pickle. Kini makatabang sa pagkompleto niini nga mas paspas ug makaluwas sa trapiko. Kung interesado ka sa usa ka mas detalyado nga katin-awan, labing maayo nga basahon ang bahin niini sa panid . Apan karon magpunting lamang kami sa kung giunsa ang librarya nagtrabaho sa Ansible.
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 mitogenKaron 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_linearo
[defaults]
strategy = mitogen_linear
strategy_plugins = /usr/lib/python2.7/site-packages/ansible_mitogen/plugins/strategyAtong 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.10Palihug 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.643sNakita 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.197sIngon 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
copymodule:
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 mahimo nimong tan-awon ang ubang mga benchmark ug mga pagsulay. Sama sa giingon 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
