sa stal jedným z najpopulárnejších ... Po v roku 2015 číslo presiahol tisíce a Ansible sa stal pravdepodobne najpoužívanejším systémom nasadenia a orchestrácie. Jeho široká škála aplikácií je veľmi pôsobivá.
Ansible funguje cez SSH pripojenia k vzdialeným hostiteľom. Otvorí reláciu SSH, prihlási sa, skopíruje kód Pythonu cez sieť a zapíše ho do samostatného dočasného súboru. Potom spustí tento súbor na vzdialenom počítači. Celý tento sled operácií je dosť dlhý a zdĺhavý, takže existujú rôzne spôsoby, ako ho optimalizovať.
Jedným z týchto spôsobov je čo vám umožňuje použiť jednu reláciu SSH na vykonanie pokynov, namiesto toho, aby ste zakaždým otvárali novú reláciu, čo nám môže ušetriť veľa času. (Len nezabudnite vypnúť requiretty nastavenie pre sudo vo vašom /etc/sudoers súbor na vzdialenom počítači)
Novým spôsobom pretaktovania Ansible je knižnica pythonu s názvom . Ak o ňom niekto nepočul, stručne popíšem jeho funkčnosť. Umožňuje rýchle spustenie kódu pythonu na vzdialenom počítači a Ansible je len jedným príkladom použitia. Mitogen používa UNIX pipe na vzdialenom počítači a prenáša python kód komprimovaný pomocou zlib a serializovaný pomocou pickle. Pomáha to dokončiť ho rýchlejšie a šetrí premávku. Ak máte záujem o podrobnejšie vysvetlenie, najlepšie je prečítať si o tom na stránke . Dnes sa ale zameriame len na to, ako knižnica funguje s Ansible.
Mitogen môže za určitých okolností niekoľkonásobne zrýchliť váš kód Ansible a výrazne znížiť spotrebu prevádzky. Pozrime sa na najpopulárnejšie prípady použitia a uvidíme, ako veľmi nám to pomáha.
Ansible používam najviac na: vytváranie konfiguračných súborov na vzdialenom počítači, inštaláciu balíkov, kopírovanie súborov do a zo vzdialeného počítača. Možno máte ďalšie príklady - napíšte do komentárov.
Poďme!
Konfigurácia mitogénu pre Ansible je veľmi jednoduchá:
Nainštalujte knižnicu Mitogen:
pip install mitogenTeraz existujú dva ekvivalentné spôsoby - buď nakonfigurujte možnosti v konfiguračnom súbore ansible.cfg, alebo nastavte potrebné premenné prostredia.
Predpokladajme, že cesta k nainštalovanému mitogénu bude /usr/lib/python2.7/site-packages/ansible_mitogen/plugins/strategy. potom:
export ANSIBLE_STRATEGY_PLUGINS=/usr/lib/python2.7/site-packages/ansible_mitogen/plugins/strategy
export ANSIBLE_STRATEGY=mitogen_linearalebo
[defaults]
strategy = mitogen_linear
strategy_plugins = /usr/lib/python2.7/site-packages/ansible_mitogen/plugins/strategyNainštalujeme Ansible vo virtualenv, s Mitogenom a bez neho:
virtualenv mitogen_ansible
./mitogen_ansible/bin/pip install ansible==2.7.10 mitogen
virtualenv pure_ansible
./pure_ansible/bin/pip install ansible==2.7.10Upozorňujeme, že Mitogen 0.2.7 nefunguje s Ansible 2.8 (od mája 2019)
Vytváranie aliasov:
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'Teraz sa pokúsme spustiť playbook, ktorý vytvorí súbory na vzdialenom počítači:
---
- 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 }}A poďme to spustiť s Mitogenom a bez neho, aby sme vytvorili 10 súborov:
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.643sVidíme 2-násobné zlepšenie. Skontrolujeme 20, 30, ..., 100 súborov:
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.197sV dôsledku toho sme zrýchlili realizáciu viac ako 10-krát!
Teraz skúsme rôzne scenáre a uvidíme, ako rýchlejšie nám všetko funguje:
Skript na kopírovanie súborov na vzdialený hostiteľ z lokálneho (s modulom
copy):
Skript na vytváranie súborov na vzdialenom hostiteľovi s
copymodul:
Scenár so sťahovaním súborov zo vzdialeného hostiteľa do lokálneho:
Skúsme scenár s niekoľkými (3) vzdialenými počítačmi, napríklad scenár s kopírovaním súborov na vzdialený hostiteľ:
Ako vidíte, Mitogen nám v týchto scenároch šetrí čas aj premávku. Ale ak úzke miesto nie je v Ansible, ale napríklad v I/O disku alebo sieti, alebo niekde inde, potom je ťažké očakávať, že nám Mitogen pomôže.
Skúsme skript s inštaláciou balíkov s modulmi yum/dnf a python pomocou pip. Balíky boli uložené do vyrovnávacej pamäte, aby nezáviseli od sieťových závad:
---
- 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
S Mitogenom to trvalo 12 sekúnd, rovnako ako bez neho.
Na stránke môžete sa pozrieť na ďalšie benchmarky a testy. Ako uvádza stránka:
Mitogen nedokáže zrýchliť modul, keď je spustený. Môže iba urýchliť vykonanie tohto modulu.
Preto je dôležité nájsť svoje úzke miesta vo vašom nasadení a ak sú spôsobené Ansible, potom vám Mitogen pomôže vyriešiť ich a výrazne urýchli spustenie vašich playbookov.
Zdroj: hab.com
