
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: 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 = TrueFaktide 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|explicitSSH-ĂŒ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 , 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 ja eksitav, sest see valik töötab kenasti! Samuti lugemine aitab mĂ”ista, mis tĂ€pselt toimuma hakkab: hallataval hostil kĂ€ivitatakse dd kĂ€sk, mis töötab otse vajaliku failiga.
transfer_method = pipedMuide, haru "develop" sees see seadistus samuti eksisteerib ja .
Ă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 töötajat, kuid kui Ă”igesti paluda, siis saab rohkem kĂ€ivitada:
forks = 20Aga 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 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. , 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
