Dalin përpara me Ansible

Dalin përpara me Ansible
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: kjo cilĂ«sim 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 = True

Grumbullimi 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|explicit

Rikë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ë dokumentacionin për ssh, 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 i varfër dhe jep informacione të gabuara, sepse ky opsion funksionon pa probleme! Megjithatë, leximin e kodit burimor 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 = piped

Në fakt, në degën "develop" kjo konfigurim gjithashtu ekziston dhe nuk është zhdukur.

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 pesĂ« punĂ«torĂ«, por nĂ«se kĂ«rkoni saktĂ«, mund tĂ« nisim mĂ« shumĂ«:

forks = 20

Por 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 e kodit burimor 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ë. Hyni, 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

Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster