u bë një nga më të njohurit . Pas në vitin 2015 numri tejkaloi mijëra dhe Ansible u bë ndoshta sistemi më i përdorur i vendosjes dhe orkestrimit. Gama e gjerë e aplikimeve të saj është shumë mbresëlënëse.
Ansible funksionon mbi lidhjet SSH me hostet në distancë. Ai hap një sesion SSH, regjistrohet, kopjon kodin Python në rrjet dhe e shkruan atë në një skedar të veçantë të përkohshëm. Pas kësaj, ai e ekzekuton këtë skedar në makinën në distancë. E gjithë kjo sekuencë operacionesh është mjaft e gjatë dhe e lodhshme, kështu që ka mënyra të ndryshme për ta optimizuar atë.
Një nga këto mënyra është i cili ju lejon të përdorni një seancë SSH për të ekzekutuar instruksionet, në vend që të hapni një sesion të ri çdo herë, gjë që mund të na kursejë shumë kohë. (Vetëm mos harroni të fikni requiretty vendosjen për sudo në tuaj /etc/sudoers skedar në makinën në distancë)
Një mënyrë e re për të mbingarkuar Ansible është një bibliotekë python e quajtur . Nëse dikush nuk ka dëgjuar për të, unë do të përshkruaj shkurtimisht funksionalitetin e tij. Ai lejon ekzekutimin e shpejtë të kodit python në një makinë të largët, dhe Ansible është vetëm një shembull i përdorimit. Mitogen përdor një tub UNIX në makinën në distancë dhe transferon kodin python të ngjeshur me zlib dhe të serializuar me turshi. Kjo ndihmon për ta përfunduar atë më shpejt dhe kursen trafikun. Nëse jeni të interesuar për një shpjegim më të detajuar, është mirë të lexoni në lidhje me të në faqe . Por sot do të fokusohemi vetëm në mënyrën se si funksionon biblioteka me Ansible.
Mitogen në rrethana të caktuara mund të shpejtojë kodin tuaj Ansible disa herë dhe të zvogëlojë ndjeshëm konsumin e trafikut. Le të shohim rastet më të njohura të përdorimit dhe të shohim se sa shumë na ndihmon.
Unë përdor Ansible më së shumti për: krijimin e skedarëve të konfigurimit në një makinë në distancë, instalimin e paketave, kopjimin e skedarëve në dhe nga makina në distancë. Ndoshta keni shembuj të tjerë - shkruani në komente.
Le të shkojë!
Konfigurimi i mitogjenit për Ansible është shumë i thjeshtë:
Instaloni bibliotekën Mitogen:
pip install mitogenTani ka dy mënyra ekuivalente - ose konfiguroni opsionet në skedarin e konfigurimit ansible.cfg, ose vendosni variablat e nevojshme të mjedisit.
Le të supozojmë se rruga për në Mitogjenin e instaluar do të jetë /usr/lib/python2.7/site-packages/ansible_mitogen/plugins/strategy. Pastaj:
export ANSIBLE_STRATEGY_PLUGINS=/usr/lib/python2.7/site-packages/ansible_mitogen/plugins/strategy
export ANSIBLE_STRATEGY=mitogen_linearose
[defaults]
strategy = mitogen_linear
strategy_plugins = /usr/lib/python2.7/site-packages/ansible_mitogen/plugins/strategyLe të instalojmë Ansible në virtualenv, me dhe pa 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.10Ju lutemi vini re se Mitogen 0.2.7 nuk funksionon me Ansible 2.8 (që nga maji 2019)
Bërja e pseudonimeve:
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'Tani le të përpiqemi të ekzekutojmë një libër luajtjeje që krijon skedarë në një makinë të largët:
---
- 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 }}Dhe le ta ekzekutojmë me dhe pa Mitogen për të krijuar 10 skedarë:
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.643sNe shohim një përmirësim 2-fish. Le të kontrollojmë për 20, 30, ..., 100 skedarë:
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.197sSi rezultat, ne e përshpejtuam ekzekutimin me më shumë se 10 herë!
Tani le të provojmë skenarë të ndryshëm dhe të shohim se sa më shpejt funksionon gjithçka për ne:
Skript për kopjimin e skedarëve në një host të largët nga një lokal (me modulin
copy):
Skript për krijimin e skedarëve në një host të largët me
copymoduli:
Skenari me shkarkimin e skedarëve nga një host i largët në një lokal:
Le të provojmë një skenar me disa (3) makina të largëta, për shembull një skenar me kopjimin e skedarëve në një host të largët:
Siç mund ta shihni, Mitogen na kursen kohë dhe trafik në këto skenarë. Por nëse pengesa nuk është në Ansible, por për shembull në hyrjen/daljen e një disku ose rrjeti, ose diku tjetër, atëherë është e vështirë të pritet që Mitogen të na ndihmojë.
Le të provojmë një skript me instalimin e paketave me module yum/dnf dhe python duke përdorur pip. Paketat u ruajtën në memorie në mënyrë që të mos vareshin nga defektet e rrjetit:
---
- 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
Me Mitogen u deshën 12 sekonda, njësoj si pa të.
Në faqe mund të shikoni standarde dhe teste të tjera. Siç thuhet në faqe:
Mitogjeni nuk mund ta përshpejtojë modulin kur është në punë. Mund të bëjë vetëm ekzekutimin e këtij moduli sa më shpejt që të jetë e mundur.
Prandaj, është e rëndësishme të gjeni pengesat tuaja në vendosjen tuaj dhe nëse ato janë për shkak të Ansible, atëherë Mitogen do t'ju ndihmojë t'i zgjidhni ato dhe të përshpejtoni ndjeshëm ekzekutimin e librave tuaj të lojërave.
Burimi: www.habr.com
