Skrypty operacyjne

Zestaw kilkunastu skryptów diagnostycznych pilnujących zdrowia infrastruktury. Wykrywają rozjazd konfiguracji, sekrety w repo, wygasające certyfikaty, martwe linki, brakujące backupy i zajęte porty. Rutynowa robota, która wcześniej pochłaniała godziny, sprowadzona do jednej komendy.

Skrypty operacyjne
TL;DR

Kilkanaście skryptów diagnostycznych pod jedną komendą. Wygasające certyfikaty, brakujące backupy, sekrety wpuszczone do repo, martwe linki, zajęte porty - rzeczy, które łatwo odłożyć na potem, aż coś padnie. Jedno polecenie, niezerowy kod wyjścia, koniec zgadywania czy ktoś pamiętał sprawdzić.

Wprowadzenie

Każda infrastruktura ma warstwę roboty, która jest nudna dokładnie do momentu, w którym staje się krytyczna. Certyfikat, który wygasa w niedzielę. Backup, który od miesiąca leci w pustkę. Sekret przypadkiem wpuszczony do repo. Zajęty port, który nie powinien nasłuchiwać. Nic z tego nie krzyczy, dopóki nie jest za późno.

Zebraliśmy te kontrole w kilkanaście małych skryptów i schowaliśmy je za jedną komendą. Cel nie był techniczny, tylko ludzki: sprawić, żeby pilnowanie infrastruktury przestało zależeć od tego, czy ktoś pamiętał je zrobić. Bo pamięć, jak się okazuje w praktyce, jest najgorszym mechanizmem bezpieczeństwa, jaki można sobie wybrać.

Rutyna, która zawsze przegrywa z terminami

Pilnowanie infrastruktury to praca z gatunku tych, które zawsze można zrobić jutro. Nudna, dopóki wszystko działa, więc ładnie ustępuje miejsca rzeczom z terminem. Problem w tym, że ona sama terminu nie ma - do momentu, w którym nagle go ma, i to twardego: cert wygasa dzisiaj, backup był potrzebny wczoraj.

To nie jest problem techniczny. Każdą z tych kontroli da się zrobić ręcznie w minutę. Problem jest w tym, że wymagają, żeby ktoś o nich pamiętał, regularnie, w tle innej pracy - i właśnie tego ludzie nie robią dobrze. Im więcej rzeczy do zapamiętania, tym pewniej któraś wypadnie, zwykle akurat ta, która tym razem miałaby coś złapać.

Jedna komenda, jeden przebieg

Sprowadziliśmy więc całą rutynę do jednej komendy, która nie zależy od niczyjej pamięci. Odpalasz ją z ręki przed wdrożeniem albo wpinasz w harmonogram i o niej zapominasz - i to jest właśnie zamierzony efekt.

Co łapie jeden przebieg

KontrolaŁapie
Certyfikatywygasa za mniej niż N dni
Backupyostatni starszy niż próg albo pusty
Sekretyklucze i tokeny wpuszczone do repo
Linkimartwe odnośniki w dokumentach i configu
Portyzajęte lub nasłuchujące tam, gdzie nie powinny
Rozjazd configuco innego w repo, co innego na serwerze

Kontrakt: kod wyjścia mówi wszystko

Żeby cokolwiek dało się wpiąć w CI albo crona, musi gadać kodem wyjścia, a nie akapitem tekstu. Zero znaczy czysto, cokolwiek innego znaczy zajrzyj. To jest cały kontrakt i właśnie jego prostota sprawia, że narzędzie da się zautomatyzować bez żadnych sztuczek.

ops-check.sh · bash
ops check --all

ops check --all --format json || notify "ops: cos wymaga uwagi"

Ta sama komenda ma dwie twarze. Dla człowieka wypisuje czytelny raport - co sprawdzone, co przeszło, co wymaga uwagi. Dla maszyny oddaje JSON, który da się sparsować i podpiąć pod alert. Jedno wejście, dwie formy wyjścia, żaden tekst dla ludzi udający interfejs dla maszyny.

Alarm, który nie dzwoni bez powodu

Najtrudniejsza część takiego narzędzia to nie same kontrole, tylko progi. Alarm, który dzwoni zawsze, jest tyle wart, co alarm wyłączony - ludzie po prostu przestają go czytać, a wtedy przepuści ten jeden raz, kiedy naprawdę coś jest nie tak. To najczęstszy sposób, w jaki monitoring cichnie: nie przez awarię, tylko przez hałas.

Dlatego każda kontrola ma próg dobrany tak, żeby komenda milczała, kiedy jest dobrze. Certyfikat wygasający za pół roku to nie alarm. Certyfikat wygasający za tydzień - owszem. Backup sprzed godziny jest w porządku, sprzed miesiąca już nie. Progi są po to, żeby cisza coś znaczyła.

➜
Wskazówka

Cisza narzędzia jest wartościowa tylko wtedy, gdy jest wiarygodna. Jeśli komenda odzywa się przy byle jakości, ludzie nauczą się ją ignorować, i wtedy nie ostrzeże przy pożarze. Dobierz progi tak, żeby brak alarmu naprawdę znaczył, że jest czysto - inaczej budujesz hałas, nie monitoring.

Co z tego zostaje

To nie jest efektowne narzędzie i takie być nie musi. Nie ma dashboardu, nie ma wykresów, nie ma nic do pokazania na screenie. Cała jego wartość jest w tym, że rutyna przestała zależeć od czyjejś pamięci - odpala się sama, a kiedy milczy, to milczenie naprawdę znaczy, że jest czysto.

12+
kontroli pod jedną komendą
1
wejście zamiast kilkunastu ręcznych kroków
sekundy
zamiast godzin obchodzenia po katalogach

Różnica jest taka, że klasa problemów, które kiedyś wychodziły na jaw dopiero przy awarii, teraz wychodzi na jaw wcześniej - przy zwykłym przebiegu przed wdrożeniem albo o stałej porze z crona. Wygasający cert daje znać na tydzień przed, a nie w niedzielę o trzeciej nad ranem. To jest cała robota tego narzędzia: zamienić ciszę z niewiedzy w ciszę z pewności.

Więcej projektów

Inne realizacje z tej samej kategorii - zobacz, jak podchodzimy do podobnych wyzwań.

Masz podobny projekt?

Napisz do nas - wycena jest bezpłatna i wraca w godzinę.