
Nuk është sekret për askënd se me konfigurimet "default", Ansible mund ta bëjë punën e tij jo shumë shpejt. Në këtë artikull do të theksoj disa arsye për këtë dhe do të ofroj një minimum të dobishëm konfigurimesh, të cilat, është shumë e mundur, do të rrisin realisht shpejtësinë e punës së projektit tuaj.
Diskutojmë këtu dhe më pas mbi Ansible 2.9.x, i cili u instalua në një virtualenv të krijuar rishtazi me mënyrën tuaj të preferuar.
Pas instalimit krijoni afĂ«r playbook-ut tuaj skedarin "ansible.cfg" â kjo vendosje do tĂ« lejojĂ« transferimin e kĂ«tyre konfigurimeve sĂ« bashku me projektin, pĂ«r mĂ« tepĂ«r do tĂ« ngarkohen automatikisht.
Konteinerizimi
Dikush mund të ketë dëgjuar për nevojën për të përdorur pipelining, domethënë jo kopjimin e moduleve në sistemin e targetuar, por dërgimin e një arkivi zip të mbështjellë me Base64 drejtpërdrejt në stdin të interpretorit Python, ndonëse fakti mbetet fakt: këto konfigurations kanë mbetur të nënvlerësuara. Fatkeqësisht, një nga distribucionet e njohura të Linux gjithashtu ndihmoi që sudo të nuk është konfiguruar shumë mirë nga planifikimi, duke bërë që kjo komandë të kërkonte një tty (terminal), kështu që në Ansible kjo konfigurim shumë e dobishme mbetet e çaktivizuar nën default.
pipelining = TrueMblidhen fakte
A e dini se me konfigurimet e defaultit, Ansible për çdo play iniciaton mbledhjen e fakteve për të gjitha hostet që përfshihen? Nëse nuk e dinit, tani e know. Për të parandaluar këtë, duhet të aktivizoni ose modin e kërkesës eksplicite për mbledhjen e fakteve (explicit), ose modin e zgjuar (smart). Në këtë mod, faktet do të mblidhen vetëm nga ato hoste që nuk janë hasur në play-përpara.
UPD. Kur kopjoni, do t'ju duhet të zgjidhni një nga këto konfigurime.
gathering = smart|explicitRivendosja e lidhjeve ssh
Nëse keni ndonjëherë ekzekutuar Ansible në modalitetin e informacionit të depërtimit (opsioni 'v', i përsëritur nga një deri në nëntë herë), mund të keni vënë re se lidhjet ssh vazhdimisht krijohen dhe ndërpriten. Këtu gjithashtu ka disa nuanca.
Mund të shmangni fazën e riinstalimit të lidhjes ssh në dy nivele: si në klientin ssh, ashtu edhe gjatë transferimit të skedarëve në hostin e menaxhuar nga menaxhuesi.
Për të ripërdorur lidhjen e hapur ssh, mjafton t'i kaloni çelësat e nevojshëm klientit ssh. Atëherë ai do të fillojë të bëjë këtë: gjatë instalimit të parë të lidhjes ssh, do të krijojë një "control socket" dhe gjatë lidhjeve të ardhshme do të kontrollojë ekzistencën e këtij soketi dhe, nëse është e suksesshme, do të ripërdorë lidhjen ekzistuese ssh. Për të pasur kuptim, le të caktojmë kohën e ruajtjes së lidhjes gjatë inaktivitetit. Mund të lexoni më shumë në , ndërsa në kontekstin e Ansible thjesht përdorim "kalimin" e opsioneve të nevojshme për klientin ssh.
ssh_args = "-o ControlMaster=auto -o ControlPersist=15m"Për të ripërdorur tashmë lidhjen ssh të hapur gjatë transferimit të skedarëve në hostin e menaxhuar, mjafton të tregoni një cilësim të panjohur ssh_transfer_method. Dokumentacioni për këtë është jashtëzakonisht dhe gjithashtu në jep konfuzion, sepse kjo mundësi është plotësisht funksionale! Por lexim i tregon se çfarë do të ndodhë: në hostin e menaxhuar do të ekzekutohet komanda dd, e cila punon drejtpërdrejt me skedarin e nevojshëm.
transfer_method = pipedNga ana tjetër, në degën «develop» ky parametr ekziston gjithashtu dhe .
Mos ki frikë nga thika, ki frikë nga piruni.
NjĂ« tjetĂ«r parametr i dobishĂ«m Ă«shtĂ« forks. Ai pĂ«rcakton numrin e proceseve punuese qĂ« do tĂ« lidhen njĂ«kohĂ«sisht me hostet dhe do tĂ« kryejnĂ« detyra. PĂ«r shkak tĂ« veçorive tĂ« Python si njĂ« gjuhĂ« programimi, pĂ«rdoren pikĂ«risht proceset dhe jo thread-at, sepse Ansible ende mbĂ«shtet Python 2.7 â asnjĂ« asyncio, nuk ka çfarĂ« tĂ« bĂ«jmĂ« me asinkroninĂ« kĂ«tu! Me defakt, Ansible nis punĂ«torĂ«, por nĂ«se kĂ«rkoni siç duhet, do tĂ« nisĂ« mĂ« shumĂ«:
forks = 20Por menjëherë paralajmëroj se këtu mund të ketë disa vështirësi të lidhura me volumet ekzistuese të memories në makinën menaxhuese. Në të tjera fjalë, është e mundur të vendosësh forks=100500, por kush e tha se do të funksionojë?
Të gjitha së bashku
Pra, për ansible.cfg (format ini) parametrat e nevojshëm mund të duken kështu:
[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ëndetshëm, ai mund të duket gjithashtu 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ë: ekvivalentët e tyre YaML nuk ekzistojnë. Ose i caktojmë në ansible.cfg, ose i kalojmë përmes variablave të mjedisit ANSIBLE_GATHERING dhe ANSIBLE_FORKS.
Për Mitogen
â Ku Ă«shtĂ« kĂ«tu pĂ«r Mitogen? â mund tĂ« pyesĂ«sh, lexues i nderuar. NĂ« kĂ«tĂ« artikull â askund. Por nĂ«se je vĂ«rtet gati tĂ« lexosh kodin e tij dhe tĂ« kuptosh pse playbook-u yt bie me Mitogen, ndĂ«rsa me Ansible-n e zakonshĂ«m punon normalisht, ose pse ky playbook deri tani ka punuar mirĂ«, dhe pas azhurnimit filloi tĂ« bĂ«jĂ« gjĂ«ra tĂ« çuditshme â atĂ«herĂ«, Mitogen potencialisht mund tĂ« jetĂ« instrumenti yt. PĂ«rdor, kupto, shkruaj artikuj â do tâi lexoj me interes.
Pse unĂ« personalisht nuk e pĂ«rdor Mitogen? Sepse ai funksionon vetĂ«m pĂ«r detyrat mjaft tĂ« thjeshta dhe kur gjithçka shkon mirĂ«. MegjithatĂ«, sa herĂ« qĂ« are duhet tĂ« devijoni pak majtas ose djathtas â mbaroi: kĂ«tu bien njĂ« mori pĂ«rjashtimesh tĂ« paqartĂ«, dhe pĂ«r tĂ« pĂ«rfunduar tablonĂ«, vetĂ«m fraza e zakonshme «faleminderit tĂ« gjithĂ«ve, jeni tĂ« lirë» mungon. PĂ«rgjithĂ«sisht, nuk dua tĂ« humbas kohĂ« duke zbuluar arsyet e njĂ« `tĂ« rĂ«nĂ« tĂ« nĂ«nshkruar` tĂ« fundit.
Disa nga kĂ«to cilĂ«sime u gjetĂ«n gjatĂ« leximin plugin-it me emrin e pĂ«rfolur «ssh.py». Po ndaj rezultatet e leximet shpresoj qĂ« kjo tĂ« frymĂ«zojĂ« edhe ndokĂ«nd tjetĂ«r tĂ« shikojĂ« nĂ« kodin burimor, ta lexojĂ«, ta verifikojĂ« implementimin, ta krahasojĂ« me dokumentacionin â sepse tĂ« gjitha kĂ«to pĂ«rfundimisht do t'ju sjellin rezultate pozitive. Suksese!
Vetëm përdoruesit e regjistruar mund të marrin pjesë në anketë. , ju lutemi.
Cilat nga cilësimet e Ansible-it për të përshpejtuar projektet tuaja përdorni?
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, cilat nga këto cilësime4
46 përdorues votuan. 21 përdorues u përmbajtën.
Keni dëshirë për më shumë informacione mbi Ansible?
78,3%po, sigurisht54
21,7%po, vetëm dua më shumë gjëra hardcore!15
0,0%jo, as nuk më duhet0
0,0%jo, shumë e komplikuar!!!0
69 përdorues kanë votuar. 7 përdorues janë abstenuar.
Burimi: habr.com
