абдан популярдуу бири болуп калды . Андан кийин 2015-жылы саны миңдегенден ашты жана Ansible, балким, эң көп колдонулган жайгаштыруу жана оркестрлөө системасы болуп калды. Анын кеңири спектри абдан таасирдүү.
Ansible алыскы хостторго SSH байланыштары аркылуу иштейт. Ал SSH сеансын ачып, кирип, Python кодун тармак аркылуу көчүрүп, аны өзүнчө убактылуу файлга жазат. Андан кийин, ал алыскы машинада бул файлды иштетет. Бул операциялардын ырааттуулугу кыйла узун жана түйшүктүү, ошондуктан аны оптималдаштыруунун ар кандай жолдору бар.
Бул жолдордун бири болуп саналат бул ар бир жолу жаңы сессияны ачуунун ордуна, көрсөтмөлөрдү аткаруу үчүн бир SSH сессиясын колдонууга мүмкүндүк берет, бул бизге көп убакытты үнөмдөйт. (Жөн гана өчүрүүнү унутпаңыз requiretty сиздин ичинде sudo орнотуу /etc/sudoers алыскы машинадагы файл)
Ansible'ди ашыкча кылуунун жаңы жолу - бул питон китепканасы . Эгер кимдир бирөө ал жөнүндө укпаса, мен анын функцияларын кыскача сүрөттөп берем. Ал алыскы машинада python кодун тез аткарууга мүмкүндүк берет жана Ansible колдонуунун бир эле мисалы. Mitogen алыскы машинада UNIX түтүгүн колдонот жана zlib менен кысылган жана питон менен серияланган питон кодун өткөрүп берет. Бул аны тезирээк бүтүрүүгө жана трафикти үнөмдөөгө жардам берет. Эгер сиз дагы кененирээк түшүндүрмөгө кызыксаңыз, анда ал жөнүндө баракчадан окуп чыкканыңыз жакшы . Бирок бүгүн биз китепкананын Ansible менен кандай иштешине гана токтолобуз.
Митоген белгилүү бир шарттарда Ansible кодуңузду бир нече эсе тездетип, трафиктин керектөөсүн олуттуу түрдө азайтышы мүмкүн. Келгиле, эң популярдуу колдонуу учурларын карап көрөлү жана анын бизге канчалык жардам берерин карап көрөлү.
Мен Ansible'ди эң көп колдоном: алыскы машинада конфигурация файлдарын түзүү, пакеттерди орнотуу, файлдарды алыскы машинага жана андан көчүрүү. Балким, сизде башка мисалдар бар - комментарийлерге жазыңыз.
Кеттик!
Ansible үчүн митоген конфигурациясы абдан жөнөкөй:
Mitogen китепканасын орнотуу:
pip install mitogenЭми эки эквиваленттүү жол бар - же ansible.cfg конфигурация файлындагы параметрлерди конфигурациялаңыз, же керектүү чөйрө өзгөрмөлөрүн орнотуңуз.
орнотулган Mitogen жол болот деп ойлойлу /usr/lib/python2.7/site-packages/ansible_mitogen/plugins/strategy. Анда:
export ANSIBLE_STRATEGY_PLUGINS=/usr/lib/python2.7/site-packages/ansible_mitogen/plugins/strategy
export ANSIBLE_STRATEGY=mitogen_linearже
[defaults]
strategy = mitogen_linear
strategy_plugins = /usr/lib/python2.7/site-packages/ansible_mitogen/plugins/strategyMitogen менен жана ансыз virtualenvде Ansible орнотолу:
virtualenv mitogen_ansible
./mitogen_ansible/bin/pip install ansible==2.7.10 mitogen
virtualenv pure_ansible
./pure_ansible/bin/pip install ansible==2.7.10Mitogen 0.2.7 Ansible 2.8 менен иштебей турганын эске алыңыз (2019-жылдын май айына карата)
лакап аттарды жасоо:
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'Эми алыскы машинада файлдарды түзгөн оюн китебин иштетүүгө аракет кылалы:
---
- 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 }}10 файлды түзүү үчүн аны Mitogen менен жана ансыз иштетели:
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Биз 2 эсе жакшырганын көрүп жатабыз. 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Натыйжада аткарууну 10 эседен ашык тездеттик!
Эми ар кандай сценарийлерди сынап көрөлү жана бардыгы биз үчүн канчалык тезирээк иштээрин карап көрөлү:
Жергиликтүү хосттон файлдарды алыскы хостко көчүрүү үчүн скрипт (модуль менен
copy):
менен алыскы хостто файлдарды түзүү үчүн скрипт
copyмодулу:
Алыскы хосттон жергиликтүү хостко файлдарды жүктөө менен сценарий:
Келгиле, бир нече (3) алыскы машиналар менен сценарийди сынап көрөлү, мисалы файлдарды алыскы хостко көчүрүү сценарийи:
Көрүнүп тургандай, Mitogen бул сценарийлерде бизге убакытты да, трафикти да үнөмдөйт. Бирок кыйынчылык Ansibleде эмес, мисалы, дисктин же тармактын киргизүү/чыгаруусунда же башка жерде болсо, анда Митоген бизге жардам берет деп күтүү кыйын.
Келгиле, yum/dnf жана python модулдары менен пакеттерди орнотуу менен скриптти колдонуп көрөлү. Тармактын мүчүлүштүктөрүнө көз каранды болбоо үчүн пакеттер кэштелген:
---
- 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
Mitogen менен 12 секунд талап кылынган, ансыз да ошондой эле.
Баракта сиз башка көрсөткүчтөрдү жана тесттерди карай аласыз. Баракта айтылгандай:
Митоген модуль иштеп жатканда ылдамдата албайт. Бул модулдун аткарылышын мүмкүн болушунча тезирээк жасай алат.
Ошондуктан, жайгаштыруудагы тоскоолдуктарды табуу маанилүү жана эгерде алар Ansible менен байланыштуу болсо, анда Mitogen сизге аларды чечүүгө жана окуу китептериңиздин аткарылышын тездетүүгө жардам берет.
Source: www.habr.com
