Kiirendame Ansible'i

Kiirendame Ansible'i
Ei ole kellelegi saladus, et Ansible vaikeseadetega ei pruugi oma tööd liiga kiiresti teha. Artiklis toon vÀlja mÔned pÔhjused ja pakun kasulikke minimaalsete seadistuste soovitusi, mis vÔivad teie projekti töö kiirusest oluliselt parandada.

Arutame siin ja edaspidi Ansible 2.9.x versiooni, mis on installitud teie lemmikmeetodil vÀrskes virtualenv's.

PĂ€rast paigaldamist looge oma playbook'i kĂ”rval fail „ansible.cfg“ — see asukoht vĂ”imaldab seadistusi projektiga kaasas kanda ning need laaditakse ĂŒsna automaatselt.

Pipeline'ide kasutamine

Kellelegi pole saladus, et pipeliningut, st mitte moodulite kopeerimist sihtsĂŒsteemi failisĂŒsteemi, vaid Base64 zip-arhiiviga edastamist otse Python'i tĂ”lgendaja stdin'i kaudu, on juba kuulatud, kuid fakt jÀÀb faktiks: see seadistus on endiselt alahinnatud. Kahjuks seadistas ĂŒks populaarne Linuxi distributsioon sudo vaikimisi mitte kĂ”ige paremini — nĂ”udes, et see kĂ€su tĂ€itmiseks peaks olema tty (terminaal), mistĂ”ttu jĂ€eti Ansible see vĂ€ga kasulik seadistus vaikimisi vĂ€lja.

pipelining = True

Faktide kogumine

Kas teadsite, et Ansible'i vaike seadistustega kĂ€ivitab iga plaan faktide kogumise kĂ”ikidest osalevatest hostidest? Üldiselt, kui te ei teadnud, siis nĂŒĂŒd teate. Et seda ei toimuks, peate kas lubama faktide kogumise selgesĂ”nalise pĂ€ringu reĆŸiimi (explicit) vĂ”i nutika reĆŸiimi. Viimases kogutakse faktid ainult nendelt hostidelt, mis pole eelnevalt plaanides ilmunud.
UPD. Kopeerimisel peate valima nende seadete hulgast ĂŒhe.

gathering = smart|explicit

ssh-ĂŒhenduste taaskasutamine

Kui olete kunagi kĂ€inud Ansible'i reĆŸiimis, kus kuvatakse silumisinfo (valik «v», korduv alates ĂŒhest kuni ĂŒheksani), siis olete ilmselt mĂ€rganud, et ssh-ĂŒhendused pidevalt luuakse ja katkestatakse. Noh, siin on samuti paar nĂŒanssi.

SSH-ĂŒhenduse uuesti loomise etappi saab vĂ€ltida kahel tasemel: nii ssh-klientis kui ka failide edastamisel haldatavale hostile haldussĂŒsteemist.
Avatud ssh-ĂŒhenduse taaskasutamiseks piisab lihtsalt vajalike ssh-vĂ”tmete edastamisest ssh-klientile. Siis hakkab ta tegema jĂ€rgmist: ssh-ĂŒhenduse esmakordsel seadistamisel loob ta nn control socket'i ja jĂ€rjestikuste ĂŒhenduste puhul kontrollib olemasolu ning Ă”nnestumise korral kasutab ta olemasolevat ssh-ĂŒhendust. Et kĂ”igel sel oleks mĂ”te, seadistame sidumise ajaloo salvestamise, kui see ei ole aktiivne. Rohkem informatsiooni leiate ssh dokumentatsioonist, ja Ansible kontekstis kasutame lihtsalt soovitud ssh-valikute "edastust".

ssh_args = "-o ControlMaster=auto -o ControlPersist=15m"

Juba avatud ssh-ĂŒhenduse taaskasutamiseks failide edastamisel hallatavale hostile piisab, kui mÀÀrata veel ĂŒks teadmata seade ssh_tranfer_method. Dokumentatsioon selle kohta on ÀÀrmiselt napakas ja eksitav, kuna see vĂ”imalus on tĂ€iesti toimiv! KĂŒll aga aitab lugemine lĂ€htekood mĂ”ista, mis tĂ€pselt toimuma hakkab: hallataval hostil kĂ€ivitatakse dd kĂ€sk, mis töötab otseselt vajaliku failiga.

transfer_method = piped

Muide, "develop" harus see seade samuti eksisteerib ja ei ole kuhugi kadunud.

Ära karda nuga, vaid karda kahvlit

Veel ĂŒks kasulik seadistus on forks. See mÀÀrab, kui palju tööprotsesse ĂŒhendatakse hostidega ja tĂ€idavad ĂŒlesandeid erinevalt. Python'i keelena kasutatakse siin protsesse, mitte thread'e, kuna Ansible toetab endiselt Python 2.7 — ei mingit asyncio't, siin pole asĂŒnkroonsust vaja! Vaikimisi alustab Ansible viit töötajat, kuid kui Ă”igesti paluda, saab rohkem kĂ€ima panna:

forks = 20

Aga kohe hoiataks, et siinkohal vĂ”ivad tekkida mĂ”ned raskused, mis on seotud hallatava masina mĂ€lumahuga. TeisisĂ”nu, forks=100500 seadmine on muidugi vĂ”imalik, kuid kes ĂŒtles, et see töötab?

KokkuvÔtteks

LÔpuks vÔivad ansible.cfg (ini-formaat) vajalikud seaded vÀlja nÀha jÀrgmiselt:

[defaults]
gathering = smart|explicit
forks = 20
[ssh_connection]
pipelining = True
ssh_args = -o ControlMaster=auto -o ControlPersist=15m
transfer_method = piped

Ja kui soovid kogu selle normaalse YaML-inventarisse peita, siis vÔib see vÀlja nÀha umbes selline:

---
all:
  vars:
    ansible_ssh_pipelining: true
    ansible_ssh_transfer_method: piped
    ansible_ssh_args: -o ControlMaster=auto -o ControlPersist=15m

Kahjuks ei sobi „gathering = smart/explicit“ ja „forks = 20“ seaded: nende YaML-i ekvivalente ei eksisteeri. Kas seame need ansible.cfg-failis vĂ”i edastame keskkonnamuutujate ANSIBLE_GATHERING ja ANSIBLE_FORKS kaudu.

KĂŒsimus Mitogeni kohta
— Kus siin on juttu Mitogenist? — vĂ”id kĂŒsida, kallis lugeja. Selles artiklis ei ole seda kuskil. Kuid kui sa tĂ”esti oled valmis lugema selle koodi ja aru saama, miks su playbook Mitogeni puhul kukub, samas kui puhta Ansible'i puhul töötab, vĂ”i miks sama playbook varem hĂ€sti töötas, aga pĂ€rast vĂ€rskendust hakkas imelikult kĂ€ituma — noh, Mitogen vĂ”ib potentsiaalselt olla sinu tööriist. Kasuta, uuri, kirjuta artikleid — loen huvi pĂ€rast.

Miks ma isiklikult Mitogeni ei kasuta? Sest see töötab ainult seni, kuni ĂŒlesanded on tĂ”eliselt lihtsad ja kĂ”ik on hĂ€sti. Kuid kui astuda veidi vasakule vĂ”i paremale — on kĂ”ik, asi lĂ€bi: vastuseks lendab su poole hulk ebaselgeid erandeid ning pildi tĂ€iendamiseks vajatakse ainult ĂŒhte fraasi „kĂ”igile aitĂ€h, kĂ”ik on vabastatud”. ÜhesĂ”naga, ma ei soovi lihtsalt aega kulutada jĂ€rgmise „maa-aluse klĂ”psu” pĂ”hjuste vĂ€ljaselgitamisele.

MĂ”ned neist seadistustest avastati lugemise kĂ€igus lĂ€htekood Ühenduse plugin nimega «ssh.py». Jagades selle lugemise tulemusi, loodan, et see inspireerib kedagi veel allikaid vaatama, neid lugema, rakendust kontrollima, dokumentatsiooniga vĂ”rdlema — lĂ”puks toob see kindlasti positiivseid tulemusi. Edu!

Ainult registreeritud kasutajad saavad kĂŒsitluses osaleda. Logige sisse, palun.

Milliseid Ansible seadeid kasutate oma projektide kiirendamiseks?

  • 69,6%pipelining = true32

  • 34,8%gathering = smart/explicit16

  • 52,2%ssh_args = "-o ControlMaster=auto -o ControlPersist=
"24

  • 17,4%transfer_method = piped8

  • 63,0%forks = XXX29

  • 6,5%Mitte midagi, ainult Mitogen3

  • 8,7%Mitogen + mĂ€rgin, millised neist seadistustest4

46 kasutajat hÀÀletas. 21 kasutajat jÀi erapooletuks.

Kas soovite veel erinevat infot Ansible'i kohta?

  • 78,3%jah, muidugi54

  • 21,7%jah, aga tahan rohkem hardcore asju!15

  • 0,0%ei, ja tasuta ei lĂ€he0

  • 0,0%ei, liiga keeruline!!!0

69 kasutajat hÀÀletas. 7 kasutajat jÀi erapooletuks.

Allikas: habr.com

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster