
Jsem systémový administrátor FirstVDS a toto je text první úvodní přednášky z mého krátkého kurzu pomoci začínajícím kolegům. Odborníci, kteří nedávno začali s systémovým administrativou, se potýkají s některými stejnými problémy. Abychom navrhli řešení, rozhodl jsem se napsat tento cyklus přednášek. Některé věci v něm jsou specifické pro technickou podporu hostingu, ale obecně se mohou ukázat jako užitečné, i když ne pro všechny, tak pro mnohé. Proto jsem text přednášky přizpůsobil, abych se o něj mohl podělit zde.
Není podstatné, jak se vaše pozice nazývá — důležité je, že se vlastně zabýváte administrativou. Proto začneme tím, co by měl systémový administrátor dělat. Jeho hlavním úkolem je uspořádání, udržování pořádku a příprava na nadcházející zvyšování pořádku. Bez systémového administrátora se na serveru začne šířit nepořádek. Logy nejsou zapisovány, nebo se do nich zapisuje něco jiného, zdroje se přerozdělují neoptimálně, disk se plní různým odpadem a systém začne pomalu umírat pod takovým množstvím chaosu. Klid! Systémoví administrátoři ve vaší osobě začínají řešit problémy a odstraňovat nepořádek!
Pilíře systémového administrávání
Ovšem než se pustíme do řešení problémů, je dobré se seznámit se čtyřmi základními pilíři administrace:
- Dokumentací
- Šablonizací
- Optimalizací
- Automatizací
Tohle je základ. Pokud svůj pracovní proces nebudete budovat na těchto principech, bude neefektivní, neproduktivní a obecně málo podobný skutečné administraci. Pojďme se podívat na každý z nich zvlášť.
Dokumentace
Dokumentace neznamená pouze čtení dokumentace (i když bez toho to nikam nevede), ale také její vedení.
Jak vést dokumentaci:
- Narazili jste na nový problém, který jste dosud nikdy neviděli? Zapište si hlavní symptomy, diagnostické metody a principy odstranění.
- Vymysleli jste elegantní řešení běžného problému? Zapište si ho, abyste ho nemuseli vymýšlet znovu za měsíc.
- Pomohli vám vyřešit otázku, v níž jste vůbec nic nechápali? Zapište si hlavní myšlenky a koncepty, nakreslete si schéma.
Hlavní myšlenka: není dobré se při osvojování a použití nového plně spoléhat na vlastní paměť.
Jaký formát budete používat, závisí pouze na vás: může to být systém poznámek, osobní blog, textový soubor nebo fyzický blok. Hlavní je, aby vaše záznamy splnily následující požadavky:
- Nebuďte příliš dlouhé.Zdůrazněte hlavní myšlenky, metody a prostředky. Pokud pochopení problému vyžaduje proniknout do nízkoúrovňové mechaniky správy paměti v Linuxu, nepřepisujte článek, ze kterého jste to zjistili - uveďte na něj odkaz.
- Záznamy musí být pro vás srozumitelné. Pokud řádek
race cond.lockupnepomůže vám okamžitě pochopit, co tímto řádkem popisujete - můžete to vysvětlit. V dobré dokumentaci není potřeba se prokousávat textem půl hodiny. - Hledání je velmi dobrá funkce. Pokud píšete záznamy na blogu, přidávejte štítky; pokud v fyzickém bloku - připevněte malé post-it lístečky s popisy. Nemá to smysl dokumentovat, pokud bude hledání odpovědi trvat stejně dlouho, jako kdybyste danou otázku řešili od začátku.

Takto může vypadat dokumentace: od primitivních záznamů v bloku (obrázek výše) až po plnohodnotnou vícerozměrnou znalostní bázi se štítky, hledáním a všemi možnými vymoženostmi (níže).

Nebudete muset hledat stejné odpovědi dvakrát: dokumentace bude skvělou oporou při učení nových témat (notičky!), zlepší vaši schopnost diagnostikovat složité problémy jedním pohledem, přidá organizaci vašim činnostem. Pokud bude dokumentace dostupná vašim kolegům, umožní jim pochopit, co a jak jste udělali, když na místě nebudete.
Šablonizace
Šablonizace je vytváření a používání šablon. Pro řešení většiny standardních otázek byste měli vytvořit určitý šablonovaný postup. Pro diagnostiku většiny problémů byste měli používat standardizovanou sekvenci kroků. Když něco opravíte/nainstalujete/optimalizujete, je třeba zkontrolovat funkčnost tohoto něčeho podle standardizovaných checklistů.
Šablonování je nejlepší způsob, jak uspořádat pracovní proces. Používáním standardních postupů pro řešení nejčastějších problémů získáte mnoho skvělých věcí. Například použití kontrolních seznamů vám umožní diagnostikovat všechny důležité funkce pro práci a eliminovat diagnostiku méně důležitých funkcionalit. Standardizované postupy minimalizují zbytečné váhání a snižují pravděpodobnost chyby.
Prvním důležitým bodem je, že procedury a kontrolní seznamy je také třeba dokumentovat. Pokud se spoléháte pouze na paměť, můžete přehlédnout nějakou skutečně důležitou kontrolu nebo operaci a vše se rozpadne. Druhým důležitým bodem je, že všechny šablonové praxe lze a měly by být modifikovány, pokud to situace vyžaduje. Neexistují ideální a zcela univerzální šablony. Pokud je problém a šablonová kontrola ho neodhalila — neznamená to, že problém není. Nicméně, než se pustíte do kontroly nějakých málo pravděpodobných hypotetických problémů, stojí vždy za to nejprve provést rychlou šablonovou kontrolu.
Optimalizace
Optimalizace mluví sama za sebe. Pracovní proces by měl být maximálně optimalizován z hlediska časových a pracovních nákladů. Varianta je nekonečné množství: naučte se klávesové zkratky, zkrácení, regulární výrazy, dostupné nástroje. Hledejte praktické způsoby, jak tyto nástroje využívat. Pokud denně 100krát spouštíte příkaz, přiřaďte mu klávesovou zkratku. Pokud se pravidelně připojujete ke stejným serverům, zapište si alias na jedno slovo, který vás tam připojuje:

Prozkoumejte různé dostupné nástroje — možná existuje pohodlnější terminálový klient, DE, správce schránky, prohlížeč, poštovní klient, operační systém. Zjistěte, jaké nástroje používají vaši kolegové a známí — možná si je nevybrali jen tak. Jakmile vyberete nástroje, naučte se je používat: naučte se klávesy, zkratky, tipy a triky.
Optimalně využijte standardní nástroje — coreutils, vim, regulární výrazy, bash. Pro poslední tři existuje obrovské množství skvělých příruček a dokumentace. S nimi se lze poměrně rychle dostat z pocitu "cítím se jako opice, která rozbíjí ořechy notebookem" do stavu "já jsem opice, která používá notebook k objednání si rozbíječe ořechů."
Automatizace
Automatizace přesune těžké operace z našich unavených rukou do neúnavných rukou automatizace. Pokud se nějaký standardní postup provádí v pěti jednotných příkazech, proč tyto příkazy nezabalit do jednoho souboru a nevolat jeden příkaz, který tento soubor stáhne a provede?
Vlastně automatizace z 80 % spočívá ve psaní a optimalizaci vlastních nástrojů (a z dalších 20 % v pokusech dostat je k práci tak, jak mají). Může to být prostě pokročilý jednorádkový skript nebo obrovský všemocný nástroj s webovým rozhraním a API. Hlavním kritériem je, že vytvoření nástroje by mělo zabrat méně času a úsilí než to, kolik svým používáním ušetříte. Pokud strávíte pět hodin psaním skriptu, který vám už nikdy nepřijde vhod, pro úkol, jehož vyřešení vám bez skriptu zabere hodinu nebo dvě — to je velmi špatná optimalizace pracovního procesu. Pět hodin můžete investovat do vytvoření nástroje pouze tehdy, pokud množství, typ úkolů a čas to umožňují, což se nestává často.
Automatizace nezahrnuje nutně psaní plnohodnotných skriptů. Například k vytvoření hromady jednotných objektů ze seznamu stačí šikovný jednorádkový skript, který automaticky udělá to, co byste dělali rukama, přepínáním mezi okny, s hromadami kopírování a vkládání.
Pokud postavíte proces administrace na těchto čtyřech pilířích, můžete poměrně rychle zvýšit svou efektivitu, produktivitu a kvalifikaci. Tento seznam je však třeba doplnit o další bod, bez kterého je práce v IT prakticky nemožná — samo-vzdělávání.
Samo-vzdělání administrátora
Abyste byli v této oblasti alespoň trochu kompetentní, je nutné se neustále učit a objevovat nové věci. Pokud nemáte ani nejmenší chuť setkávat se s neznámým a zkoumat, velmi rychle „poklesnete“. V IT se neustále objevují nejrůznější nová řešení, technologie a metody, a pokud se je neučíte alespoň povrchně — jdete k prohře. Mnohé oblasti informačních technologií spočívají na poměrně složitém a objemném základu. Například práce s ítěmi. Sítě a internet jsou přítomny všude, setkáváte se s nimi každý den, ale když se začnete zajímat o technologie, které za nimi stojí, objevíte obrovskou a velmi složitou disciplínu, jejíž studium rozhodně není procházkou v parku.
Tento bod jsem nezařadil do seznamu, protože je klíčový pro IT jako celek, a ne pouze pro systémové administrátory. Samozřejmě, že se vám nepodaří naučit se úplně všechno a hned — jednoduše na to nemáte čas. Proto je při samo-vzdělávání důležité mít na paměti potřebné úrovně abstrakce.
Není nutné hned učit se, jak funguje vnitřní správa paměti každého jednotlivého nástroje a jak interaguje se správou paměti Linuxu, ale mít představu o tom, co operační paměť schematicky je a k čemu slouží, je dobré. Nemusíte znát strukturalní rozdíly mezi záhlavími TCP a UDP, ale bylo by dobré chápat základní odlišnosti protokolů v praxi. Není třeba studovat, co představují útlumy signálu v optických vláknech, ale bylo by užitečné vědět, proč skutečné ztráty se vždy dědí podle uzlů. Není nic špatného na tom, vědět, jak fungují určité prvky na určité úrovni abstrakce, a není nutné analyzovat naprosto všechny úrovně, když neexistuje žádná abstrakce (prostě se z toho zblázníte).
Však se v svojí oblasti hovořit na úrovni abstrakce „no, to je taková věc, která umožňuje zobrazovat webové stránky“ — není příliš dobré. Následující přednášky budou věnovány přehledu hlavních oblastí, se kterými se systémový administrátor musí potýkat v práci na nižších úrovních abstrakce. Pokusím se omezit množství zkoumaných znalostí na minimální úroveň abstrakce.
10 přikázání systémového administrátora
Takže jsme se seznámili se čtyřmi základními pilíři a základy. Můžeme začít řešit problémy? Zatím ne. Nejdřív je dobré se obeznámit s takzvanými „best practices“ a pravidly dobrého chování. Bez nich hrozí, že více uškodíte než pomůžete. Tak začněme:
- Někteří moji kolegové tvrdí, že prvním pravidlem je „neškodit“. Ale já s tím nesouhlasím. Když se snažíte neškodit, v podstatě nemůžete nic dělat – příliš mnoho akcí je potenciálně destruktivních. Nejzásadnějším pravidlem považuji – „udělej zálohu“. I když uškodíte, vždy se můžete vrátit zpět a už to nebude tak špatné.
Zálohovat je třeba vždy, když je čas a místo na to. Zálohovat byste měli to, co hodláte měnit, a co riskujete ztratit při potenciálně destruktivní akci. Zálohu byste měli zkontrolovat na integritu a přítomnost všech potřebných dat. Nemažte zálohu hned po tom, co všechno zkontrolujete, pokud nemáte potřebu uvolnit místo na disku. Pokud je třeba uvolnit místo – zálohujte na váš osobní server a mazejte po týdnu.
- Druhým nejdůležitějším pravidlem (které sám často porušuji) je – „neskryvej“. Pokud jste udělali zálohu, napište – kam, aby vaši kolegové nemuseli hledat. Pokud jste provedli nějaké nejasné nebo složité akce, zaznamenejte to: odejdete domů a problém se může opakovat nebo vzniknout u někoho jiného a vaše řešení se najde podle klíčových slov. I když děláte něco, co dobře znáte, vaši kolegové to nemusí vědět.
- Třetí pravidlo není třeba vysvětlovat: „nikdy nedělej to, jejíž důsledky neznáš, nepředstavuješ si nebo nechápeš“. Nekopíruj příkazy z internetu, pokud nevíš, co dělají, zavolej man a nejprve si to rozluč. Nepoužívej hotová řešení, pokud nemůžeš pochopit, co dělají. Minimalizuj provádění zakódovaného kódu. Pokud nemáš čas se s tím zorientovat – děláš něco špatně a měl bys se seznámit s následujícím bodem.
- „Testuj“. Nové skripty, nástroje, jednorázové příkazy a příkazy by měly být testovány v kontrolovaném prostředí, nikoli na klientském stroji, pokud existuje alespoň minimální potenciál k destruktivním akcím. I když jste vše zálohovali (a udělali jste to), prostoje nejsou nic příjemného. Pořiďte si k tomu samostatný server/virtuálku/chroot a testujte tam. Nic se neporouchalo? Pak můžete spustit na „produkci“.

- „Kontroluj“. Minimalizujte veškeré operace, které neovládáte. Jedna špatná závislost v balíčku může vzít za sebou polovinu systému, a přepínač -y pro yum remove vám dává možnost procvičit si dovednosti obnovení systému od nuly. Pokud akce nemá nekontrolované alternativy — pokračujte k dalšímu bodu a připravené záloze.
- „Kontroluj“. Kontrolujte důsledky svých akcí a zda je třeba se vrátit k záloze. Ověřte, zda se problém skutečně vyřešil. Kontrolujte, zda se chyba reprodukuje a za jakých podmínek. Zjistěte, co můžete svými akcemi rozbít. Důvěřovat ve své práci je zbytečné, ale kontrolovat — nikdy ne.
- „Komunikuj“. Pokud se vám nedaří vyřešit problém, zeptejte se kolegů, jestli se s tím setkali. Chcete aplikovat sporné řešení — zjistěte názor kolegů. Možná navrhnou lepší řešení. Nejste si jisti svými kroky — proberte je s kolegy. I když je to vaše odborná oblast, nový pohled na situaci může mnoho objasnit. Nebojte se přiznat své neznalosti. Raději se zeptejte na hloupou otázku, vypadněte jako blázen a získejte na ni odpověď, než se nezeptat, nedostat odpověď a zůstat jako blázen.
- „Nedávej neodůvodněně pomoc“. Tento bod je opačná stránka předchozího. Pokud jste dostali hloupou otázku — objasněte a vysvětlete. Žádají o nemožné — vysvětlete, že to není možné a proč, navrhněte alternativy. Pokud nemáte čas (skutečně nemáte čas, ne nechcete) — řekněte, že máte urgentní otázku a velké množství práce, ale že se na to podíváte později. Pokud kolegové nemají urgentní úkoly, navrhněte, aby se obrátili na ně, a delegujte otázku.
- „Poskytni zpětnou vazbu“Někteří z kolegů začali používat novou metodiku nebo skript a vy se setkáváte s negativními důsledky tohoto rozhodnutí? Dejte nám vědět. Možná je problém řešitelný na tři řádky kódu nebo za pět minut úprav metodiky. Narazili jste na chybu v softwaru? Nahlaste ji. Pokud je reprodukovatelná nebo ji není nutné reprodukovat, pravděpodobně ji opravíme. Vyjádřete svá přání, návrhy a konstruktivní kritiku, vznesete otázky k diskusi, pokud se vám zdají relevantní.
- „Žádejte zpětnou vazbu“Všichni nejsme dokonalí, stejně jako naše rozhodnutí, a nejlepší způsob, jak ověřit správnost svého rozhodnutí, je předložit ho k diskusi. Optimalizovali jste něco pro klienta — požádejte, aby sledoval práci, možná je "úzké hrdlo" systému jinde, než jste hledali. Napsali jste pomocný skript — ukažte ho kolegům, možná najdou způsob, jak ho vylepšit.
Pokud tyto praktiky v práci neustále uplatňujete, většina problémů přestane být problémy: nejenže snížíte počet svých vlastních chyb a prohřešků na minimum, ale také budete mít příležitost chyby opravit (v podobě záloh a kolegů, kteří vám doporučí zálohovat). Dál jsou jen technické detaily, ve kterých, jak známo, tkvějí problémy.
Hlavní nástroje, s kterými budete muset pracovat více než 50 % času — grep a vim. Co může být jednodušší? Hledání v textu a úprava textu. Ale grep i vim jsou mocné multifunkční nástroje, které umožňují efektivně hledat a upravovat text. Zatímco nějaký windowský notepad vám umožní prostě napsat/odstranit řádek, v vim můžete s textem dělat téměř cokoliv. Nevěříte — zavolejte z terminálu příkaz vimtutor a začněte se učit. Co se týče grepu — jeho hlavní síla spočívá v regulárních výrazech. Ano, samotný nástroj umožňuje poměrně flexibilně nastavit podmínky hledání a výstupní data, ale bez RegExp to nemá moc smyslu. A regulární výrazy byste měli znát! Aspoň na základní úrovni. Na začátek bych vám doporučil podívat se na toto. , v němž se rozebírají základy regulárních výrazů a jejich použití společně s grep. A ano, když je zkombinujete s vim, získáte ULTIMÁTNÍ SÍLU, možnost dělat s textem takové věci, že je třeba je ověsit značkami 18+.
Z zbývajících 50 % připadá 40 % na balík nástrojů coreutils. Seznam pro coreutils si můžete zobrazit v , a příručka k celému seznamu je na stránkách . Co není pokryto tímto balíkem, najdete v utilitách . Není nutné pamatovat si to všechno se všemi klíči nazpaměť, ale alespoň přibližně vědět, co mohou hlavní nástroje, je užitečné. Nebudete muset vynalézat kolo z berlí. Kdysi jsem potřeboval nahradit nové řádky mezerami ve výstupu z nějaké utility a nemocná mysl porodila konstrukci ve stylu sed ':a;N;$!ba;s\/n\/ /g', přicházející kolega mě odháněl od konzole s koštětem a pak problém vyřešil napsáním tr 'n' ' '.

Doporučil bych si zapamatovat, co přibližně dělá každý jednotlivý nástroj a klíče k těm nejčastěji používaným příkazům, pro všechno ostatní je man. Neváhejte zavolat man, pokud si nejste v něčem jisti. A určitě si přečtěte man na man — obsahuje důležité informace o tom, co najdete.
Znalostí těchto nástrojů budete schopni efektivně vyřešit značnou část úloh, se kterými se na praxi setkáte. V následujících lekcích se podíváme na to, kdy tyto nástroje a struktury hlavních služeb a aplikací použít.
S vámi byl systémový administrátor FirstVDS Kirill Cvetkov.
Zdroj: habr.com

