Cyflymu Ansible

Cyflymu Ansible
Nid yw'n gyfrinach na all Ansible wneud ei waith yn gyflym iawn gyda'r gosodiadau diofyn. Yn yr erthygl byddaf yn nodi sawl rheswm am hyn ac yn cynnig lleiafswm defnyddiol o leoliadau a fydd, yn eithaf posibl, yn cynyddu cyflymder eich prosiect mewn gwirionedd.

Yma ac isod rydym yn trafod Ansible 2.9.x, a osodwyd mewn virtualenv a grëwyd yn ffres yn eich hoff ffordd.

Ar ôl ei osod, crëwch ffeil “ansible.cfg” wrth ymyl eich llyfr chwarae - bydd y lleoliad hwn yn caniatáu ichi drosglwyddo'r gosodiadau hyn ynghyd â'r prosiect, a byddant yn llwytho'n eithaf awtomatig.

Piblinellu

Efallai bod rhai eisoes wedi clywed am yr angen i ddefnyddio piblinellu, hynny yw, peidio â chopïo modiwlau i system ffeiliau'r system darged, ond trosglwyddo archif zip wedi'i lapio yn Base64 yn uniongyrchol i stdin y cyfieithydd Python, ond efallai na fydd eraill, ond y ffaith yn parhau i fod yn ffaith: y gosodiad hwn yn dal i gael ei danamcangyfrif. Yn anffodus, nid yw rhai o'r dosbarthiadau Linux poblogaidd a ddefnyddiwyd i ffurfweddu sudo yn dda iawn yn ddiofyn - fel bod angen tty (terfynell) ar y gorchymyn hwn, felly gadawodd Ansible y gosodiad defnyddiol iawn hwn yn anabl yn ddiofyn.

pipelining = True

Casglu ffeithiau

Oeddech chi'n gwybod, gyda gosodiadau diofyn, bod Ansible ar gyfer pob drama yn cychwyn casglu ffeithiau ar gyfer yr holl westeion sy'n cymryd rhan ynddi? Yn gyffredinol, os nad oeddech chi'n gwybod, nawr rydych chi'n gwybod. Er mwyn atal hyn rhag digwydd, mae angen i chi alluogi naill ai'r modd cais penodol ar gyfer casglu ffeithiau (yn eglur) neu'r modd craff. Ynddo, bydd ffeithiau'n cael eu casglu gan y gwesteiwyr hynny na ddaethpwyd ar eu traws mewn dramâu blaenorol yn unig.
UPD. Wrth gopïo, bydd yn rhaid i chi ddewis un o'r gosodiadau hyn.

gathering = smart|explicit

Ailddefnyddio cysylltiadau ssh

Os ydych chi erioed wedi rhedeg Ansible yn y modd dadfygio (yr opsiwn "v", wedi'i ailadrodd un i naw gwaith), efallai eich bod wedi sylwi bod cysylltiadau ssh yn cael eu gwneud a'u torri'n gyson. Felly, mae yna gwpl o gynildeb yma hefyd.

Gallwch osgoi'r cam o ailsefydlu cysylltiad ssh ar ddwy lefel ar unwaith: y ddau yn uniongyrchol yn y cleient ssh, ac wrth drosglwyddo ffeiliau i'r gwesteiwr a reolir gan y rheolwr.
I ailddefnyddio cysylltiad ssh agored, rhowch yr allweddi angenrheidiol i'r cleient ssh. Yna bydd yn dechrau gwneud y canlynol: wrth sefydlu cysylltiad ssh am y tro cyntaf, bydd hefyd yn creu soced reoli fel y'i gelwir, ar osodiadau dilynol, bydd yn gwirio bodolaeth y soced hon, ac os yw'n llwyddiannus, yn ailddefnyddio'r cysylltiad ssh presennol. Ac i wneud hyn i gyd yn gwneud synnwyr, gadewch i ni osod yr amser ar gyfer cynnal y cysylltiad pan fydd yn anactif. Gallwch ddarllen mwy yn dogfennaeth ssh, ac yng nghyd-destun Ansible rydym yn defnyddio “anfon ymlaen” yr opsiynau angenrheidiol i'r cleient ssh.

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

I ailddefnyddio cysylltiad ssh sydd eisoes ar agor wrth drosglwyddo ffeiliau i westeiwr rheoledig, nodwch osodiad anhysbys arall ssh_tranfer_method. Mae'r ddogfennaeth ar y pwnc hwn yn hynod stingy ac yn gamarweiniol, oherwydd mae'r opsiwn hwn yn gweithio'n eithaf da! Ond darllen cod ffynhonnell yn eich galluogi i ddeall beth yn union fydd yn digwydd: bydd y gorchymyn dd yn cael ei lansio ar y gwesteiwr a reolir, gan weithio'n uniongyrchol gyda'r ffeil a ddymunir.

transfer_method = piped

Gyda llaw, yn y gangen “datblygu” mae'r gosodiad hwn hefyd yn bodoli ddim yn mynd i unman.

Peidiwch â bod ofn y gyllell, byddwch yn ofni y fforc

Gosodiad defnyddiol arall yw ffyrc. Mae'n pennu nifer y prosesau gweithwyr a fydd yn cysylltu â gwesteiwyr ar yr un pryd ac yn cyflawni tasgau. Oherwydd hynodion Python fel iaith, defnyddir prosesau, nid edafedd, oherwydd mae Ansible yn dal i gefnogi Python 2.7 - dim asyncio i chi, does dim pwynt cyflwyno ymddygiad asyncronaidd yma! Yn ddiofyn mae Ansible yn rhedeg pump gweithwyr, ond os gofynnir yn gywir, bydd yn lansio mwy:

forks = 20

Rwy'n eich rhybuddio ar unwaith y gallai fod rhai anawsterau yma yn ymwneud â faint o gof sydd ar gael ar y peiriant rheoli. Mewn geiriau eraill, gallwch, wrth gwrs, osod ffyrch = 100500, ond pwy ddywedodd y byddai'n gweithio?

Rhoi'r cyfan at ei gilydd

O ganlyniad, ar gyfer ansible.cfg (fformat ini), gall y gosodiadau angenrheidiol edrych fel hyn:

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

Ac os ydych chi am guddio popeth mewn rhestr YaML arferol o berson iach, yna gall edrych fel hyn:

---
all:
  vars:
    ansible_ssh_pipelining: true
    ansible_ssh_transfer_method: piped
    ansible_ssh_args: -o ControlMaster=auto -o ControlPersist=15m

Yn anffodus, ni fydd hyn yn gweithio gyda'r gosodiadau “gathering = smart/explicit” a “ffyrc = 20”: nid yw eu cywerthoedd YaML yn bodoli. Naill ai rydyn ni'n eu gosod yn ansible.cfg, neu rydyn ni'n eu pasio trwy'r newidynnau amgylchedd ANSIBLE_GATHERING ac ANSIBLE_FORKS.

Ynglŷn â Mitogen
- Ble mae hyn yn ymwneud â Mitogen? — mae genych hawl i ofyn, annwyl ddarllenydd. Does unman yn yr erthygl hon. Ond os ydych chi'n barod iawn i ddarllen ei god a darganfod pam mae'ch llyfr chwarae yn damwain gyda Mitogen, ond yn gweithio'n iawn gyda vanilla Ansible, neu pam roedd yr un llyfr chwarae yn gweithio'n iawn o'r blaen, ond ar ôl i ddiweddariad ddechrau gwneud pethau rhyfedd - wel, Mitogen gallai fod yn declyn i chi. Ei gymhwyso, ei ddeall, ysgrifennu erthyglau - byddaf yn ei ddarllen gyda diddordeb.

Pam nad ydw i'n bersonol yn defnyddio Mitogen? Oherwydd bod Gladiolus yn gweithio dim ond cyn belled â bod y tasgau'n syml iawn a bod popeth yn iawn. Fodd bynnag, os trowch ychydig i’r chwith neu’r dde – dyna ni, rydym wedi cyrraedd: mewn ymateb, mae llond llaw o eithriadau aneglur yn hedfan atoch chi, ac i gwblhau’r llun, y cyfan sydd ar goll yw’r ymadrodd cyffredin “diolch i chi gyd , mae pawb yn rhydd.” Yn gyffredinol, dydw i ddim eisiau gwastraffu amser yn darganfod y rhesymau dros y “curiad tanddaearol” nesaf.

Darganfuwyd rhai o'r gosodiadau hyn yn ystod y broses ddarllen cod ffynhonnell ategyn cysylltiad o dan yr enw hunanesboniadol “ssh.py”. Rwy'n rhannu canlyniadau darllen yn y gobaith y bydd yn ysbrydoli rhywun arall i edrych ar y ffynonellau, eu darllen, gwirio'r gweithrediad, cymharu â'r ddogfennaeth - wedi'r cyfan, yn hwyr neu'n hwyrach bydd hyn i gyd yn dod â chanlyniadau cadarnhaol i chi. Pob lwc!

Dim ond defnyddwyr cofrestredig all gymryd rhan yn yr arolwg. Mewngofnodios gwelwch yn dda.

Pa un o'r gosodiadau Ansible canlynol ydych chi'n eu defnyddio i gyflymu'ch prosiectau?

  • 69,6%piblinellu=gwir32

  • 34,8%crynhoad = smart/eglur16

  • 52,2%ssh_args = "-o ControlMaster=auto -o ControlPersist=..."24

  • 17,4%transfer_method = piped8

  • 63,0%ffyrch = XXX29

  • 6,5%Dim o hyn, dim ond Mitogen3

  • 8,7%Mitogen + Byddaf yn nodi pa un o'r gosodiadau hyn4

Pleidleisiodd 46 o ddefnyddwyr. Ymatalodd 21 defnyddiwr.

Eisiau mwy o bethau am Ansible?

  • 78,3%ie, wrth gwrs54

  • 21,7%ydw, Fi jyst eisiau stwff craidd caled mwy! 15

  • 0,0%na, ac nid yw yn angenrheidiol i ddim0

  • 0,0%na, mae'n gymhleth!!!0

Pleidleisiodd 69 o ddefnyddwyr. Ataliodd 7 o ddefnyddwyr.

Ffynhonnell: hab.com

Ychwanegu sylw