Amazon wydał niedawno nową wersję swojej dystrybucji linuksowej – Amazon Linux 2023. Kiedyś taka informacja byłaby szeroko komentowana, ale teraz przejdzie raczej bez echa. To dlatego, że nie ekscytujemy się już nowymi dystrybucjami, a ja postanowiłem poświęcić ten newsletter linuxowi – wspaniałemu kawałku oprogramowania, które zapoczątkowało moją karierę.
Czy Linuks ma jeszcze znaczenie?
Czasy świetności Linuksa może jeszcze nie przeminęły, ale nie odgrywa on tak dużej roli jak kiedyś. Teraz to tak zwane commodity, czyli chleb powszedni wszystkich pracujących w IT. Zakładamy już na początku, że każdy już go zna i wiemy jak go używać.
No bo spójrz, Kubernetes to tak naprawdę rozproszony Linuks z doskonałym REST API. To może być tajną przyczyną, dla której nie przejmujemy się co jest pod spodem. Te wszystkie wspaniałe ficzery, którymi ekscytowaliśmy się lata temu są bowiem ukryte w kontrolerach lub wykorzystywane w różnego rodzaju projektach.
I dlatego też nie musisz znać Linuksa tak dogłębnie jak kiedyś. Jedynym obszarem, który pozostał związany z linuxem są kontenery. Budowa obrazów kontenerów wymaga wiedzy na temat funkcjonowania linuxa. Taki Dockerfile obecnie składa się głównie z dyrektyw RUN, w których często znajduje się wiele ciekawych komend zaczynając od instalacji pakietów aż po zaawansowane regexpy i inne magiczne triki.
Zatem owszem, Linuks ma nadal olbrzymie znaczenie, ale wiedza o nim jest ukryta i wykorzystujemy ją bardziej od strony użytkownika poprzez projekty typu Kubernetes.
Czy dystrybucje mają jeszcze znaczenie?
Kiedyś owszem, dystrybucje i różnice między nimi stanowiły źródło “ciekawych” dyskusji. Szczególnie miało to znaczenie przy obsłudze różnego rodzaju sprzętu, bowiem Linuks zarówno wtedy jak i teraz królował na serwerach.
Producenci certyfikowali lub też wypuszczali sterowniki (moduły do kernela) na wybrane dystrybucje. I tak narodziła się hegemonia jednego systemu – Red Hat Enterprise Linux (RHEL).
Dla tych co nie chcieli płacić za wsparcie idealnym rozwiązaniem okazywał się CentOS. Do czasu aż Red Hat postanowił projekt popsućzmienić to i CentOS przestał być kompatybilny i być darmowym odpowiednikiem komercyjnego RHEL. Dla tych, którzy nadal płaczą za centosem jest na szczęście projekt RockyLinux.
Natomiast to i tak nie ma większego znaczenia, szczególnie jeśli zagłębiasz się w świat Kubernetesa i kontenerów. Tam nie ma znaczenia dystrybucja – liczy się bowiem głównie kernel i środowisko uruchomieniowe dla kontenerów (np. containerd, CRI-O, Docker).
W takim świecie dominuje Debian, który jest używany dla większości oficjalnych obrazów kontenerów. Na serwerach zaczyna dominować Ubuntu i widać to również na platformach chmurowych gdzie jest dostępna nawet wersja PRO.
Projekty takie jak Alpine też mają swoje miejsce, ale jeśli czytałeś poprzedni newsletter to wiesz że może być to ryzykowne.
Dystrybucje mają mniejsze znaczenie ale sam Linuks ma się dobrze. Liczą się bardziej praktyczne umiejętności, które możesz wykorzystywać na co dzień.
Poznawać dogłębnie czy dać sobie spokój?
Dobra wiadomość jest taka, że nie musisz się już masterować ze wszystkich ficzerów kernela oraz tajników obsługi danej dystrybucji.
Jak już pisałem wcześniej ta wiedza jest wykorzystana w projektach takich jak Kubernetes, a dostawcy chmury publicznej również używają go pod spodem do oferowania ci usług za $.
Jeśli zaczynasz lub nie czujesz się pewnie z Linuksem to najlepiej zacznij używać go jako swoje podstawowe środowisko pracy. To zmusi cię do poznawania i używania komend na co dzień. Linuks raczejz pewnością nie wygra rywalizacji z windowsem jako środowisko desktopowe, ale jako natywny system do odpalania kontenerów (bez maszyn wirtualnych) nadaje się wyśmienicie. Do tego przyda ci się znajomość shella i najważniejszych komend.
Jeśli już w miarę ogarniasz Linuksa to nie musisz się męczyć z nim na desktopie. Dzięki WSL2 na windowsie lub natywnemu środowisku na macos możesz nadal używać ulubionych komend i cieszyć się z faktu, że każdy oprogramowanie będzie działać bez jakichś sztuczek jak to często ma miejsce na Linuksie.
Co potrzebujesz znać z linuksa do swobodnej pracy?
Zacząłbym od zarządzania procesami. W końcu kontenery to specjalne procesy linuksowe i warto abyś wiedział jak je obsługiwać.
Do tego jeśli pracujesz lub chcesz pracować jako DevOps to element sieciowe są super istotne. Narzędzia takie jak iptables, zarządzanie interfejsami sieciowymi czyt tablicą routingu będą niezbędne do zarządzania plastrami Kubernetesa, które sam postawisz na przykład na on-prem.
Potrzebujesz wiedzieć jak zarządzać pakietami dla linuksowych serwerów oraz definicji nowych obrazów kontenerów (i maszyn wirtualnych też – patrz Packer). Na szczęście nie musisz wiedzieć jak je tworzyć, bowiem ta wiedza nie jest już tak niezbędna odkąd mamy kontenery.
No i wspomniany wcześniej shell, czyli głównie Bash. Musisz wiedzieć jak swobodnie poruszać się po środowisku – czy to serwer czy też sesja na uruchomionym kontenerze. Z czasem odkryjesz też inne narzędzia typu sed, xargs, find, awk i praca z linii komend będzie czystą przyjemnością.
Aha – nie zapomnij również o VI. Może się okazać, że będzie to jedyny dostępny edytor, a ty będziesz potrzebować coś na szybko zmienić. I oczywiście naucz się z niego wychodzić, bo to może być na początku najważniejsza umiejętność 😅