Pierwszy skrypt, który się przedstawia
3 zadania do wykonania w prawdziwym Pythonie (w przeglądarce).
Kursy Python dla DevOps od zera do bohateraDlaczego Python w DevOps i pierwszy skrypt
Bash to nieodłączny element środowiska operacyjnego, ale jego granice pojawiają się nieuchronnie, gdy automatyzacja przekracza prostą sekwencję poleceń. Skrypt zarządzający jedną usługą działa bez zarzutu. Skrypt parsujący logi, walidujący odpowiedź JSON z API, generujący konfigurację i wywołujący trzy różne narzędzia CLI zaczyna przypominać łatkę. Brak strukturalnej obsługi błędów, trudne debugowanie zmiennych, brak natywnego wsparcia dla złożonych struktur danych i niestabilność między dystrybucjami to koszty, które w produkcji przekładają się na nieudane deploymenty i nocne alerty. Kiedy logika rośnie powyżej pięćdziesięciu linii, Bash przestaje być narzędziem, a staje się długiem technicznym. Przejście na Pythona nie jest opcją — to konieczność, gdy automatyzacja ma być powtarzalna, testowalna i czytelna dla całego zespołu.
Perl kiedyś rządził w system administration, ale jego ekosystem zestarzał się, a składnia odstrasza nowych inżynierów. Go oferuje wydajność i statyczną kompilację, ale w DevOps często priorytetem jest szybkość prototypowania, integracja z istniejącym toolchainem i dostępność bibliotek do pracy z API, YAML, JSON czy systemem plików. Python w 2026 roku to standard de facto. Wspiera go nowoczesny toolchain: uv jako menedżer środowisk i pakietów, ruff do linteringu i formatowania w czasie rzeczywistym, oraz natywne integracje z Terraformem, Ansiblem, Prometheus exporterami i cloud SDK. Python nie jest najszybszy w wykonywaniu, ale jest najszybszy w dostarczaniu wartości operacyjnej.
python3 kontra python i mechanizm uruchamianiaW systemach Linuxowych python często wskazuje na Pythona 2, który jest niebezpieczny i nieobsługiwany. Zawsze używaj python3 lub skonfiguruj alias. W nowoczesnym workflow z uv tworzymy izolowane środowisko, ale na początek wystarczy systemowy interpreter. Kluczowy jest shebang #!/usr/bin/env python3. Nie używaj sztywnych ścieżek jak #!/usr/bin/python3, bo env szuka interpretera w $PATH, co gwarantuje przenośność między kontenerami, CI/CD i różnymi dystrybucjami. Bez shebangu skrypt wymaga jawnego wywołania python3 skrypt.py. Z shebangiem i prawami wykonywania staje się samodzielnym narzędziem CLI. Uprawnienia chmod +x dodają bit wykonania, ale nie zastępują poprawnego shebangu. System jądra odczytuje pierwszą linię, deleguje wykonanie do interpretera i przekazuje resztę pliku jako kod. To mechanizm, który sprawia, że Twoje skrypty zachowują się jak native binarki.
Otwórz terminal. Stwórz plik check_service.py. Wklej:
#!/usr/bin/env python3
import subprocess
import sys
def check_service(name: str) -> bool:
try:
result = subprocess.run(
["systemctl", "is-active", name],
capture_output=True,
text=True,
check=True
)
return result.stdout.strip() == "active"
except subprocess.CalledProcessError:
return False
except FileNotFoundError:
print(f"Błąd: systemctl nieznany. Czy to kontener bez systemd?", file=sys.stderr)
sys.exit(1)
if __name__ == "__main__":
if len(sys.argv) != 2:
print("Użycie: check_service.py <nazwa_usługi>", file=sys.stderr)
sys.exit(1)
service = sys.argv[1]
if check_service(service):
print(f"Usługa {service} jest aktywna.")
else:
print(f"Usługa {service} jest nieaktywna.", file=sys.stderr)
sys.exit(1)
Nadaj prawa: chmod +x check_service.py. Uruchom: ./check_service.py nginx. Nie musisz pisać python3 check_service.py. Skrypt zachowuje się jak native CLI tool. Zwróć uwagę na sys.stderr dla błędów — w pipeline'ach CI/CD stdout i stderr są traktowane osobno. Mieszanie ich to przyczyna ukrytych awarii, które wykrywają się dopiero po fakcie. Zawsze kieruj diagnostykę na stderr, a dane wyjściowe na stdout. To nie jest konwencja, to wymóg integracji z narzędziami DevOps.
Bash do prostych glue'ów, Python do logiki, która ma przetrwać zmianę zespołu, migrację chmury i audit. Shebang, chmod +x, oddzielenie stdout/stderr i użycie uv od drugiego dnia to fundament, który oszczędza godziny debugowania w produkcji. Pisz skrypty tak, jakby miały być uruchamiane przez kogoś innego o trzeciej nad ranem.
3 zadania do wykonania w prawdziwym Pythonie (w przeglądarce).