ең танымалдардың біріне айналды . Кейін 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 конфигурация файлындағы опцияларды конфигурациялаңыз немесе қажетті орта айнымалы мәндерін орнатыңыз.
Орнатылған Митогенге жол болады деп есептейік /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 файл жасау үшін оны Митогенмен және онсыз іске қосайық:
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.643s2 есе жақсарғанын көріп отырмыз. 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-де емес, мысалы, дискінің немесе желінің енгізу/шығаруында немесе басқа жерде болса, онда Митоген бізге көмектеседі деп күту қиын.
Yum/dnf және pip көмегімен 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
Митогенмен 12 секунд қажет болды, онсыз сияқты.
Бетте басқа эталондар мен сынақтарды қарауға болады. Парақта айтылғандай:
Митоген модуль жұмыс істеп тұрған кезде оны жылдамдата алмайды. Ол тек осы модульдің орындалуын мүмкіндігінше жылдам ете алады.
Сондықтан, орналастырудағы қиындықтарды табу маңызды және егер олар Ansible-ге байланысты болса, онда Mitogen сізге оларды шешуге көмектеседі және ойын кітаптарының орындалуын айтарлықтай жылдамдатады.
Ақпарат көзі: www.habr.com
