Skripta up se zažene, konča z ničlo, naloga v njej pa ne doseže zasebne storitve, ki s terminala dve sekundi kasneje deluje brezhibno. Nagon pravi, da je kriv čas, običajno popravilo pa je spanje, ki tekmo skrije, ne da bi jo razumelo. Bolj uporabno branje je, da “up” poimenuje kavelj, ne jamstva pripravljenosti. Sproži se, ko je tunelska naprava konfigurirana, kar je prej kot poti, DNS in zagotovo prej kot katera koli aplikacija za tunelom.

Preizkus v lupini je uspel, ker se je izvedel potem, ko se je vse umirilo. Kavelj se je izvedel v enem samem trenutku.

Kje je up v vrstnem redu zagona

OpenVPN konfigurira tunelsko napravo in nato izvede kavelj up. Namestitev poti je poznejša faza in ima svoj kavelj, zato lahko naloga, odvisna od poti, nameščena v up, vidi napravo brez uporabne poti. Delo s potmi postavite v route-up in težava s časom običajno izgine.

Priročnik dokumentira ta vrstni red in okolje, ki ga prejme vsak kavelj. Ta vrstni red je celotna razlaga klasičnega poročila “deluje iz moje lupine”, in je tudi razlog, zakaj lahko ista skripta uspe na enem stroju in spodleti na drugem s počasnejšo fazo poti. Noben od rezultatov ne pove ničesar o kakovosti skripte.

DNS in pripravljenost aplikacije prideta še pozneje. Tudi nameščene poti niso dokaz, da oddaljena končna točka posluša, da se ime razreši ali da obstaja namizna seja za nalogo v uporabniškem obsegu.

Kaj kavelj dejansko podeduje

Kavelj se izvaja pod računom in okoljem procesa OpenVPN, kar ni isto kot vaša interaktivna lupina. Lahko mu manjka vodilo seje uporabnika, namizno okolje ali poverilnica, ki se odklene šele ob prijavi. Zapišite, kaj od tega naloga res potrebuje.

To je pomembno za naloge, ki izgledajo omrežno, a so odvisne od uporabniškega konteksta: priklop deljenega imenika z uporabniško poverilnico, nastavitev proxyja za posameznega uporabnika ali konfiguracija tiskalnika. Privilegirani tunelski kavelj je zanje napačno mesto in nobeno čakanje ne popravi manjkajoče seje.

Ko naloga v kavlju spodleti, zabeležite račun, okolje in prvo operacijo, ki je spodletela. To loči prezgodnji čas od težave z dovoljenji ali kontekstom, ta dva pa imata povsem različna popravka. Ugibanje med njima je način, kako petminutni popravek postane celo popoldne.

Zakaj dodajanje spanja ni preverjanje pripravljenosti

Spanje odloži skripto in premakne okno tekme. Na hiter dan naloga uspe, na počasen dan spet spodleti, napako pa je teže ponoviti, ker se zdi, da zamik deluje. Zamik, ki deluje le pri majhni obremenitvi, je naključje, ne popravek.

Če je odvisnost pot, uporabite kavelj, ki ustreza namestitvi poti. Če je odvisnost storitev za tunelom, uporabite omejeno preverjanje, ki čaka na ta posebni pogoj in jasno spodleti, ko se nikoli ne zgodi.

Ohranite napako izrecno. Kavelj, ki konča z ničlo, medtem ko je njegovo resnično delo spodletelo, je slabši od kavlja, ki spodleti, ker upravitelj storitev zabeleži uspeh in nihče več ne pogleda. Ena vrstica dnevnika iz same skripte je najcenejši način, da to ostane pošteno.

Čiščenje in ponovno povezovanje si zaslužita enako skrb

Skripta, ki spreminja skupno stanje, potrebuje ustrezen razveljavitveni potek. Poti, vnose razreševalnika in oznake požarnega zidu, ki jih doda kavelj, morajo biti idempotentne in povratne, sicer bo ponovna povezava naložila drugo kopijo na prvo.

Ponovne povezave lahko izvajajo kavlje pogosteje kot popoln zagon storitve. Trajni vmesnik, ki znova vzpostavi sejo, lahko znova sproži cikel up in route-up, zato se bo skripta, ki predpostavlja eno izvedbo na zagon, sčasoma obnašala nepravilno. Preštejte izvedbe v dnevniku čez dan utripanja, da vidite, kako pogosto se v resnici izvaja. Nato naredite skripto varno za tolikokratno izvajanje.

Preizkusite življenjski cikel, ki je spodletel, ne poznejšega ukaza. Ponovite zagon ali ponovno povezavo, opazujte izvajanje kavlja in potrdite, da je naloga uspela v trenutku, ko se res izvaja. Uspeh iz interaktivne lupine pozneje je dokaz o odvisnosti, ne dokaz, da začetna pot deluje.

Poimenujte dogodek, od katerega je odvisna vsaka naloga, in nato nalogo pritrdite na ta dogodek. Vse ostalo je zamik, ki se pretvarja, da je preverjanje.

Sorodni članki