Modul 1 — Základy Linuxu a příkazové řádky

1. Co je Linux a proč je základem DevOps

Úvod do Linuxu jako operačního systému a vysvětlení, proč je znalost Linuxu nezbytným základem pro každého DevOps inženýra.

Odhadovaná délka studia: 35 minut · Stav: nehotovo

Technologie: Linux

Úvod a kontext

Pokud se chcete stát DevOps inženýrem, dřív nebo později narazíte na jednu
neměnnou skutečnost: naprostá většina serverů, cloudových instancí,
kontejnerů i řídicích rovin Kubernetes běží na Linuxu. Zatímco na svém
notebooku můžete klidně používat Windows nebo macOS, produkční
infrastruktura firem je z valné většiny postavená na linuxových
distribucích. Tato první lekce vysvětlí, co Linux vlastně je, odkud se
vzal a proč je jeho ovládání z příkazové řádky základním kamenem celé
DevOps praxe.

Teorie

Co je operační systém

Operační systém (OS) je software, který zprostředkovává komunikaci mezi
hardwarem počítače (procesor, paměť, disky, síťová karta) a aplikacemi,
které na něm běží. Stará se o plánování procesů, správu paměti, přístup
k souborům a zařízením a poskytuje aplikacím jednotné rozhraní, aby
nemusely řešit detaily konkrétního hardwaru.

Linux jako jádro (kernel) a distribuce

Přesně vzato, "Linux" je jádro (kernel) — jádro operačního systému,
které vytvořil v roce 1991 finský student Linus Torvalds jako svobodnou
alternativu k tehdejším unixovým systémům. Jádro samo o sobě ale
uživateli k ničemu není — potřebuje kolem sebe sadu nástrojů: shell,
správce balíčků, systémové knihovny, init systém apod. Kombinace jádra
Linux a sady doprovodného softwaru se nazývá distribuce (distro).

Mezi nejrozšířenější distribuce v serverovém / DevOps prostředí patří:

  • Ubuntu Server / Debian — odvozené od Debianu, balíčkovací systém
    apt (.deb balíčky), velmi rozšířené na cloudových VM i v Docker
    images.
  • RHEL (Red Hat Enterprise Linux), CentOS Stream, Rocky Linux,
    AlmaLinux — odvozené od Red Hatu, balíčkovací systém yum/dnf
    (.rpm balíčky), časté v korporátním prostředí.
  • Alpine Linux — extrémně malá distribuce, oblíbená jako základ
    minimalistických Docker images.
  • Amazon Linux — distribuce optimalizovaná pro běh na AWS EC2.

Z pohledu DevOps inženýra je důležité rozumět koncepcím, které jsou napříč
distribucemi společné (souborový systém, procesy, práva, shell), a znát
rozdíly v balíčkovacích systémech a některých cestách ke konfiguračním
souborům.

Proč je Linux páteří DevOps

  1. Server-side dominance. Naprostá většina veřejných cloudových
    instancí (AWS EC2, Google Compute Engine, Azure VM) i on-premise
    serverů běží na Linuxu — je zdarma, stabilní, dobře škálovatelný a má
    obrovskou komunitu.
  2. Kontejnery jsou linuxová technologie. Docker i Kubernetes stojí na
    linuxových jaderných mechanismech (namespaces, cgroups). I když dnes
    existují Windows kontejnery, drtivá většina produkčních kontejnerových
    workloadů běží na linuxových images.
  3. Automatizace přes příkazovou řádku. DevOps je z velké části o
    automatizaci — skriptování, CI/CD pipeline, konfigurační management.
    Linuxový shell a jeho nástroje (Bash, grep, sed, awk, cron) jsou
    univerzálním jazykem automatizace serverové infrastruktury.
  4. Open source ekosystém. Nástroje jako Nginx, Terraform, Ansible,
    Prometheus, Git jsou primárně vyvíjeny a testovány pro Linux a na
    Linuxu se také nejčastěji provozují.
  5. Nízké náklady a licenční svoboda. Linux je zdarma a licenčně volný,
    což je pro provoz stovek až tisíců serverů zásadní ekonomická výhoda
    oproti placeným licencím.

Grafické rozhraní vs. příkazová řádka

Desktopové linuxové distribuce mají grafické rozhraní (GNOME, KDE), ale
serverové instalace ho typicky vůbec nemají — komunikace probíhá výhradně
přes shell (příkazovou řádku), obvykle vzdáleně přes SSH (tomu se
budeme věnovat v modulu o sítích). Shell je program, který čte příkazy od
uživatele a předává je jádru ke zpracování. Nejrozšířenějším shellem je
Bash (Bourne Again SHell), kterému se budeme podrobně věnovat
v modulu o skriptování.

Praktický příklad

Ukažme si první kontakt s příkazovou řádkou. Po přihlášení na server přes
SSH (nebo v terminálu na lokálním Linuxu) uvidíte tzv. prompt,
například:

petr@server:~$

Vyzkoušejte tyto základní příkazy — nic nerozbijí, jen zjišťují informace
o systému:

# Zjistí jméno a verzi distribuce
$ cat /etc/os-release
NAME="Ubuntu"
VERSION="22.04.3 LTS (Jammy Jellyfish)"
ID=ubuntu

# Zjistí verzi linuxového jádra
$ uname -r
5.15.0-91-generic

# Zjistí, kdo jste (aktuální uživatel)
$ whoami
petr

# Zjistí aktuální adresář (working directory)
$ pwd
/home/petr

# Vypíše čas běhu systému a zatížení
$ uptime
 14:32:01 up 12 days,  3:14,  1 user,  load average: 0.08, 0.05, 0.01

Příkaz cat /etc/os-release je typickým prvním krokem, kterým DevOps
inženýr zjistí, s jakou distribucí pracuje — od toho se pak odvíjí, jestli
použije apt nebo yum, kde hledat konfigurační soubory apod.

Shrnutí

Linux je jádro operačního systému, které v kombinaci s doprovodným
softwarem tvoří distribuci (Ubuntu, Debian, RHEL, Alpine a další). Je
naprosto dominantní platformou pro servery, cloud i kontejnery, a proto je
znalost jeho příkazové řádky nezbytným základem pro DevOps praxi —
automatizace, konfigurace i diagnostika probíhají téměř výhradně přes
shell. V dalších lekcích si postupně projdeme souborový systém, práva,
procesy a textové nástroje, které tvoří každodenní výbavu DevOps
inženýra.

Kontrolní otázky

  1. Jaký je rozdíl mezi pojmy "linuxové jádro" a "linuxová distribuce"?
  2. Uveďte alespoň tři důvody, proč je Linux dominantní platformou pro
    serverovou infrastrukturu a kontejnery.
  3. Jaký příkaz použijete ke zjištění, jakou distribuci a verzi Linuxu
    server používá?
  4. Proč servery typicky nemají grafické rozhraní a jak se s nimi tedy
    pracuje?

Lekce na sebe nejsou zamčené — libovolnou lekci můžete otevřít i označit jako hotovou v jakémkoliv pořadí.