
Nuk është sekret për askënd se me cilësimet 'me default', Ansible nuk e bën punën e tij shumë shpejt. Në këtë artikull do të theksoj disa arsye për këtë dhe do të propozoj një minimum të dobishëm të cilësimeve, të cilat ndoshta do të rrisin shpejtësinë e funksionimit të projektit tuaj.
Këtu dhe më tej diskutojmë Ansible 2.9.x, i cili është instaluar në një virtualenv të sapo krijuar në mënyrën tuaj të preferuar.
Pas instalimit krijoni pranĂ« playbook-ut tuaj skedarin 'ansible.cfg' â kjo pozicion do tĂ« mundĂ«sojĂ« transferimin e cilĂ«simeve tĂ« dhĂ«nave sĂ« bashku me projektin, pĂ«rveç qĂ« ato do tĂ« ngarkohen automatikisht.
Pipelining
Dikush ka dĂ«gjuar qĂ« duhet tĂ« pĂ«rdoret pipelining, domethĂ«nĂ« jo kopjimi i moduleve nĂ« sistemin e skedarĂ«ve tĂ« sistemit tĂ« targetuar, por transferimi i njĂ« arkivi zip tĂ« mbĂ«shtjellĂ« nĂ« Base64 drejtpĂ«rdrejt nĂ« stdin tĂ« interpretuesit Python, por kjo Ă«shtĂ« njĂ« fakt: ende mbetet e nĂ«nvlerĂ«suar. FatkeqĂ«sisht, disa nga shpĂ«rndarjet e njohura tĂ« Linux herĂ«t mĂ« parĂ« e pĂ«rshtatĂ«n sudo-nĂ« jo shumĂ« mirĂ« â kĂ«shtu qĂ« kjo komandĂ« kĂ«rkonte njĂ« tty (terminal), prandaj nĂ« Ansible kjo cilĂ«sim shumĂ« e dobishme u la e çaktivizuar nga default.
pipelining = TrueGrumbullimi i fakteve
A e dini se me cilësimet me default Ansible për çdo play iniciaton grumbullimin e fakteve nga të gjithë hostet që marrin pjesë në të? Në përgjithësi, nëse nuk e dinit, tani e dini. Për t'u siguruar që kjo të mos ndodhi, duhet të aktivizoni ose mënyrën e kërkesës eksplicite për grumbullim faktesh (explicit), ose mënyrën smart. Në të, faktet do të grumbullohen vetëm nga ato hoste që nuk janë takuar në play të mëparshëm.
UPD. Gjatë kopjimit ju do të duhet të zgjidhni ndonjë nga këto cilësime.
gathering = smart|explicitRikëthimi i lidhjeve ssh
Nëse ndonjëherë keni ekzekutuar Ansible në mënyrën e daljes së informacionit të shkallës (opsioni 'v', i përsëritur nga një deri në nëntë herë), ndoshta keni vënë re se lidhjet ssh vazhdimisht krijohen dhe prishen. Pra, këtu gjithashtu ekziston një çift nuancash.
Të shmangni etapën e riinstalimit të lidhjes ssh mund të bëhet në dy nivele menjëherë: si direkt në klientin ssh, ashtu edhe gjatë transferimit të skedareve në hostin e menaxhuar nga ai që menaxhon.
Për të ripërdorur një lidhje ssh të hapur, mjafton të kaloni çelësat e nevojshëm te klienti ssh. Atëherë ai do të fillojë të bëjë sa vijon: gjatë instalimit të parë të lidhjes ssh, do të krijojë një socket kontrolli, dhe gjatë lidhjeve të mëpasshme do të kontrollojë ekzistencën e këtij socket-i, dhe nëse është e suksesshme, do të ripërdorë lidhjen ssh ekzistuese. Dhe për ta bërë këtë të kuptueshëm, le të caktuar një kohë ruajtjeje të lidhjes kur nuk është aktive. Më shumë detaje mund të lexoni në , ndërsa në kontekstin e Ansible ne thjesht përdorim "kalimin" e opsioneve të nevojshme te klienti ssh.
ssh_args = "-o ControlMaster=auto -o ControlPersist=15m"Për të ripërdorur një lidhje ssh tashmë të hapur kur të kaloni skedarë në hostin e menaxhuar, mjafton të specifikoni një konfigurim të panjohur ssh_transfer_method. Dokumentacioni lidhur me këtë është jashtëzakonisht dhe jep informacione të gabuara, sepse ky opsion funksionon pa probleme! Megjithatë, leximin na lejon të kuptojmë se çfarë do të ndodhë: në hostin e menaxhuar do të ekzekutohet komanda dd, që punon direkt me skedarin e nevojshëm.
transfer_method = pipedNë fakt, në degën "develop" kjo konfigurim gjithashtu ekziston dhe .
Mos ki frikë nga thika, ki frikë nga piruni
NjĂ« tjetĂ«r konfigurim tĂ« dobishĂ«m Ă«shtĂ« forks. Kjo pĂ«rcakton numrin e proceseve punuese qĂ« do tĂ« lidhen njĂ«kohĂ«sisht me hostet dhe do tĂ« ekzekutojnĂ« detyrat. PĂ«r shkak tĂ« veçorive tĂ« Python si gjuhĂ« programimi, pĂ«rdoren pikĂ«risht proceset, jo thread-et, sepse Ansible ende mbĂ«shtet Python 2.7 â asnjĂ« asyncio kĂ«tu, nuk duhet tĂ« zhvillojmĂ« ashpĂ«rsira asinkrone! Me pĂ«rjashtim tĂ« rasteve, Ansible nismon punĂ«torĂ«, por nĂ«se kĂ«rkoni saktĂ«, mund tĂ« nisim mĂ« shumĂ«:
forks = 20Por menjëherë të paralajmëroj se këtu mund të kenë disa vështirësi, lidhur me sasinë e memorie që ekziston në makinën menaxhuese. Me fjalë të tjera, vendosja e forks=100500, padyshim që është e mundur, por kush tha se do të funksionojë?
Të gjitha së bashku
Si rezultat, për ansible.cfg (format ini) konfigurimet e nevojshme mund të duken si më poshtë:
[defaults]
gathering = smart|explicit
forks = 20
[ssh_connection]
pipelining = True
ssh_args = -o ControlMaster=auto -o ControlPersist=15m
transfer_method = piped
Dhe nëse dëshiron të fshehësh gjithçka në një YaML-inventory të shëndoshë, atëherë ai mund të duket kështu:
---
all:
vars:
ansible_ssh_pipelining: true
ansible_ssh_transfer_method: piped
ansible_ssh_args: -o ControlMaster=auto -o ControlPersist=15m
FatkeqĂ«sisht, me konfigurimet «gathering = smart/explicit» dhe «forks = 20» kjo nuk do tĂ« kalojĂ«: nuk ekzistojnĂ« ekivalente YaML pĂ«r to. Ose tâi vendosim ato nĂ« ansible.cfg, ose tâi kalojmĂ« pĂ«rmes variablave mjedisorĂ« ANSIBLE_GATHERING dhe ANSIBLE_FORKS.
Për Mitogen
â Ku Ă«shtĂ« kĂ«tu pĂ«r Mitogen? â mund tĂ« pyesĂ«sh ti, lexues i nderuar. NĂ« kĂ«tĂ« artikull â askund. Por nĂ«se je vĂ«rtet i gatshĂ«m tĂ« lexosh kodin e tij dhe tĂ« kuptosh pse playbook-u yt dĂ«shton me Mitogen, ndĂ«rsa me Ansible-in e zakonshĂ«m funksionon normal, ose pse ky playbook deri tani ka punuar mirĂ«, por pas pĂ«rditĂ«simit ka filluar tĂ« sillet çuditshĂ«m â çfarĂ« tĂ« thuhet, Mitogen potencialisht mund tĂ« jetĂ« instrumenti yt. Apliko, hulumto, shkruaj artikuj â do tâi lexoj me interes.
Pse unĂ« personalisht nuk e pĂ«rdor Mitogen? Sepse ai funksionon vetĂ«m kur detyrat janĂ« vĂ«rtet tĂ« thjeshta dhe gjithçka shkon mirĂ«. MegjithatĂ«, sapo e kthen pak majtas ose djathtas â gjithçka, mbaroi: nĂ« pĂ«rgjigje tĂ« kĂ«saj, njĂ« grusht pĂ«rjashtimesh tĂ« paqartĂ«sish vjen drejt teje, dhe pĂ«r tĂ« pĂ«rfunduar pamjen nuk i mungon vetĂ«m fraza e zakonshme «faleminderit tĂ« gjithĂ«ve, jeni tĂ« lirë». NĂ« pĂ«rgjithĂ«si, nuk dĂ«shiroj tĂ« humbas kohĂ« me zbardhjen e arsyes sĂ« njĂ« «thirrjeje nĂ«ntokĂ«sore» tĂ« re.
Disa nga kĂ«to konfigurime janĂ« zbuluar nĂ« procesin e leximit plugin-it tĂ« lidhjes me emrin domethĂ«nĂ«s «ssh.py». Po ndaj rezultatet e leximit me shpresĂ«n se kjo do tĂ« frymĂ«zojĂ« edhe dikĂ« tjetĂ«r tĂ« shikojĂ« nĂ« burimin, tĂ« lexojĂ«, tĂ« kontrollojĂ« implementimin, tĂ« krahasojĂ« me dokumentacionin â sepse gjithçka kjo vonĂ« apo herĂ«t do t'ju sjellĂ« rezultate pozitive. Fat tĂ« mbarĂ«!
Vetëm përdoruesit e regjistruar mund të marrin pjesë në anketë. , ju lutem.
Cilat nga konfigurimet e përmendura të Ansible-it përdorni për të përshpejtuar projektet tuaja?
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%Asgjë nga këto, vetëm Mitogen3
8,7%Mitogen + do të theksoj se cilat saktësisht nga këto konfigurime4
Votuan 46 përdorues. Abstenuan 21 përdorues.
Doni më shumë gjëra të ndryshme për Ansible?
78,3%Po, sigurisht54
21,7%Po, vetëm dua më shumë gjëra të vështira!15
0,0%Jo, dhe as që më nevojitet0
0,0%Jo, është shumë e komplikuar!!!0
Votuan 69 përdorues. Abstenuan 7 përdorues.
Burimi: habr.com
