Ansible тавассути пайвастҳои SSH ба ҳостҳои дурдаст кор мекунад. Он сессияи SSH-ро мекушояд, ворид мешавад, рамзи Python-ро тавассути шабака нусхабардорӣ мекунад ва онро ба файли муваққатии алоҳида менависад. Баъд аз ин, он ин файлро дар мошини дурдаст иҷро мекунад. Ин пайдарпайии амалиётҳо хеле тӯлонӣ ва дилгиркунанда аст, аз ин рӯ роҳҳои гуногуни оптимизатсияи он мавҷуданд.
Яке аз ин роххо аст requiretty
танзим барои sudo дар шумо /etc/sudoers
файл дар мошини дурдаст)
Роҳи нави overclock Ansible китобхонаи python номида мешавад
Митоген дар баъзе ҳолатҳо метавонад коди 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/strategy
Биёед Ansible-ро дар virtualenv бо ва бе 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
Лутфан таваҷҷӯҳ намоед, ки Mitogen 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 }}
Ва биёед онро бо ва бидуни Mitogen иҷро кунем, то 10 файл эҷод кунем:
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) мошини дурдаст санҷем, масалан сенарияи нусхабардории файлҳо ба ҳости дурдаст:
Тавре ки шумо мебинед, Митоген дар ин сенарияҳо ҳам вақт ва ҳам трафикро сарфа мекунад. Аммо агар монеа дар Ansible набошад, масалан дар I/O-и диск ё шабака ё дар ҷои дигар бошад, пас интизор шудан душвор аст, ки Митоген ба мо кӯмак мекунад.
Биёед скриптро бо насби бастаҳо бо модулҳои yum/dnf ва python бо истифода аз pip кӯшиш кунем. Бастаҳо кэш карда шуданд, то аз хатогиҳои шабака вобаста набошанд:
---
- 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 ба шумо кӯмак мекунад, ки онҳоро ҳал кунед ва иҷрои китобҳои бозиро ба таври назаррас суръат бахшед.
Манбаъ: will.com