Kiirendame Ansible'i.

Kiirendame Ansible'i.
Kellelegi ei ole saladus, et vaikeseadetega Ansible ei suuda oma tööd alati kiiresti teha. Artiklis toon vÀlja mitu selle pÔhjuseid ja pakun vÀlja kasulikud seadistused, mis vÔivad teie projekti töö kiirus tÔenÀoliselt oluliselt suurendada.

RÀÀgime siin ja edaspidi Ansible 2.9.x versioonist, mis on paigaldatud vÀrskelt loodud virtualenvi teie lemmikviisil.

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

Torujoonestamine

Kas olete kuulnud, et pipelining'i kasutamine, see tĂ€hendab moodulite mitte kopeerimist sihtruumi failisĂŒsteemi, vaid Base64 zip-arhiivi edastamist otse Python'i tĂ”lgendi stdin'isse, on tĂ”hus? Fakt jÀÀb faktiks: see seadistus et pĂŒsib endiselt alahinnatud. Kahjuks mĂ”nes populaarsetes Linuxi distributsioonides ei olnud sudo vaikimisi hĂ€sti seadistatud — nii, et see kĂ€sk kĂŒsis tty (terminaali) olemasolu, seega jĂ€eti Ansible's see vĂ€ga kasulik seadistus vaikimisi vĂ€lja.

pipelining = True

Faktide kogumine

Kas te teate, et vaikeseadetega Ansible kĂ€ivitab iga play puhul faktide kogumise kĂ”ikide hostide osas, mis selles osalevad? Kui te ei teadnud, siis nĂŒĂŒd teate. Selle vĂ€ltimiseks tuleb sisse lĂŒlitada kas faktide kogumise eksplitsiitne reĆŸiim vĂ”i nutikas reĆŸiim. Viimases kogutakse fakti andmed ainult nendelt hostidelt, mida ei ole eelnevates play'des kohatud.
UPD. Kopeerimisel peate nendest seadistustest valima ainult ĂŒhe.

gathering = smart|explicit

SSH-ĂŒhenduste uuesti kasutamine

Kui olete kunagi kĂ€ivitanud Ansible'i tĂ”rkeotsingu reĆŸiimis (valik „v”, korduv alates ĂŒhest kuni deviteeni), siis olete vĂ”ib-olla mĂ€rganud, et SSH-ĂŒhendused pidevalt luuakse ja katkestatakse. Siingi on mĂ”ned nĂŒansid.

SSH-ĂŒhenduse uuesti loomise etappi saab vĂ€ltida kahel tasandil: nii SSH-klientis kui ka failide edastamisel hallatavale hostile haldurist.
Ava SSH-ĂŒhenduse taaskasutamiseks on piisav, kui edastada vajalikud vĂ”tmed SSH-klientile. Siis hakkab ta jĂ€rgmist tegema: esimese SSH-ĂŒhenduse loomise ajal loob ta tĂ€iendavalt nii-öelda juhtimise pesase, jĂ€rgmistel kordadel kontrollib ta olemasoleva pesase olemasolu ning eduka juhul kasutab ta olemasolevat SSH-ĂŒhendust uuesti. Et see kĂ”ik oleks mĂ”istlik, mÀÀrame ĂŒhenduse sĂ€ilitamise aja inaktiivsuse ajal. TĂ€iendaval teabel saab lugeda SSH dokumentatsioonist, ja Ansible'i kontekstis kasutame me lihtsalt "vajalike valikute edastamist" SSH-klientile.

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

Töötava SSH-ĂŒhenduse taaskasutamiseks failide edastamisel hallatavale hostile tuleb lihtsalt mÀÀrata veel ĂŒks tundmatu seadistus ssh_transfer_method. Dokumentatsioon selle kohta on ÀÀrmiselt napakas ja eksitav, sest see valik töötab kenasti! Samuti lugemine allikakoodist aitab mĂ”ista, mis tĂ€pselt toimuma hakkab: hallataval hostil kĂ€ivitatakse dd kĂ€sk, mis töötab otse vajaliku failiga.

transfer_method = piped

Muide, haru "develop" sees see seadistus samuti eksisteerib ja ei ole kuhugi kadunud.

Ära karda noa, vaid karda kahvlit

Veel ĂŒks kasulik seadistus on forks. See mÀÀrab töötavate protsesside arvu, mis samal ajal ĂŒhenduvad hostidega ja tĂ€idavad ĂŒlesandeid. Python'i kui programmeerimiskeele eripĂ€rade tĂ”ttu kasutatakse protsesse, mitte thread'e, sest Ansible toetab endiselt Python 2.7 — ei mingit asyncio, ei tasu asĂŒnkroonsust proovida! Vaikimisi kĂ€ivitab Ansible viis töötajat, kuid kui Ă”igesti paluda, siis saab rohkem kĂ€ivitada:

forks = 20

Aga kohe hoiatuseks, et siin vĂ”ivad esineda mĂ”ned probleemid, mis on seotud haldusmasina olemasoleva mĂ€lu mahutavusega. TeisisĂ”nu, forks=100500 seadmine on muidugi vĂ”imalik, kuid kes ĂŒtles, et see töötab?

Kogume kÔik kokku

LÔppkokkuvÔttes vÔivad vajalikud seaded ansible.cfg (ini-formaat) vÀlja nÀha nii:

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

Ja kui soovid kÔike normaalsesse YaML-inventari peita, siis see vÔib 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 seadetega «gathering = smart/explicit» ja «forks = 20» nii ei toimi: nende YaML-i ekvivalente ei eksisteeri. Kas mÀÀrame need ansible.cfg failis vÔi edastame keskkonnamuutujate ANSIBLE_GATHERING ja ANSIBLE_FORKS kaudu.

Mitogenist
— Aga kus siin on juttu Mitogenist? — vĂ”id sa kĂŒsida, austatud lugeja. Selles artiklis — mitte kusagil. Kuid kui sa oled tĂ”eliselt valmis lugema selle kood ja aru saama, miks su playbook Mitogeniga ei tööta, samas kui puhas Ansible töötab hĂ€sti, vĂ”i miks sama playbook töötas varem normaalselt, aga pĂ€rast uuendamist hakkas imelikult kĂ€ituma — noh, Mitogen vĂ”ib olla potentsiaalselt sinu tööriist. Kasuta, uurige, kirjuta artikleid — loen huviga.

Miks ma isiklikult Mitogenit ei kasuta? Sest see töötab ainult siis, kui ĂŒlesanded on tĂ”eliselt lihtsad ja kĂ”ik on hĂ€sti. Kui aga veidi vÀÀnata vasakule vĂ”i paremale — kĂ”ik, see on lĂ”pp: vastuseks lendab su suunas hulk segaseid erandeid, ja tĂ€iendavaks pildiks jÀÀb puudu vaid fraas «kĂ”igile tĂ€nud, kĂ”ik on vabaks». KokkuvĂ”ttes, ma ei soovi lihtsalt aega raisata jĂ€rgmise «maapinna koputamise» pĂ”hjuste vĂ€ljaselgitamiseks.

MĂ”ned neist seadistustest leidsin lugemise kĂ€igus allikakoodist connection plugini alt nimega «ssh.py». Jagatavad tulemused loodetavasti innustavad kedagi veelgi vaatama lĂ€htekoodi, seda lugema, kontrollima rakendust, vĂ”rreldama dokumentatsiooniga — lĂ”puks toob see varem vĂ”i hiljem teie jaoks positiivseid tulemusi. Edu!

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

Milliseid Ansible'i seadistusi oma projektide kiirendamiseks kasutate?

  • 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 nendest, ainult Mitogen3

  • 8,7%Mitogen + toon vĂ€lja, millised neist seadistustest4

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

Tahate veel erinevat Ansible'i kohta?

  • 78,3%jah, muidugi54

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

  • 0,0%ei, ja ei ole seda ĂŒldse vaja0

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

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

Allikas: habr.com

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster