Od pewnego czasu korzystam z opisywanego kiedyś narzędzia apt-dater do aktualizacji hostów w środowiskach większych, niż kilka własnych testowych maszyn. Garść praktycznych uwag nt. używania w takich środowiskach.
- W okolicy wersji 1.0 zmienił się format pliku (teraz jest XML), przez co linkowany wyżej opis jest nieaktualny. Zmian wymagał też skrypt generujący konfigurację apt-datera na podstawie danych z Chefa.
- Warto podzielić hosty na grupy – raz, że łatwiej decydować, gdzie wykonujemy aktualizację w danym momencie, dwa, że każdy host to osobne procesy w momencie działań więc… może być tego za dużo, jeśli zaczniemy aktualizować listę pakietów wszędzie jednocześnie (tak, mam skonfigurowane limits na workstacji, tak walnąłem w limity, jak leciałem hurtem).
- Sama aktualizacja to nie wszystko, trzeba jeszcze zrestartować procesy korzystające ze starych bibliotek. Kiedyś był checkrestart, teraz jest bardziej popularny – i nieźle współpracujący z apt-dater – needrestart.
- Niezależnie od podziału na grupy, można ad hoc zaznaczyć hosty do wykonania operacji (polecenie tag). Sposób niezbyt intuicyjny, bo najpierw zaznaczamy hosty [t], następnie zatwierdzamy je do wykonania [;], a na końcu wybieramy polecenie do wykonania.
- Apt-dater przyspiesza pracę, ale nie udało mi się (i nie tylko mi), uniknąć podłączania do każdej sesji po zakończeniu aktualizacji i zamykania jej. Nawet, jeśli cała aktualizacja przeszła pomyślnie, bez interaktywnych pytań i nie ma nic do restartu. Gdyby się komuś udało – proszę o komentarz.
- Odpowiednio ustawione hold lub apt_preferences to podstawa, jeśli ma się jakieś dziwne (czytaj: 3rd party) pakiety, których autorzy niezupełnie umieją paczkować Debian way.
W każdym razie apt-dater bardzo ułatwia i przyspiesza pracę. Generalnie polecam.
Niestety nie miałem nigdy potrzeby skorzystania z takiego narzędzia. Osobiście na pojedyńczych maszynach korzystam z cron-apt i działa bardzo sprawnie.
@nbb A w jaki sposób rozwiązujesz restart serwisów, jeśli korzystają ze starych bibliotek? Przykład: masz serwer WWW, wychodzi aktualizacja do openssl, z którego ów serwer korzysta. Sama aktualizacja openssl w systemie nie rozwiązuje tematu już uruchomionego serwera WWW.
Z tego co wiem needrestart podpina się pod apt i wszystko się samo robi bez dodatkowej konfiguracji. Ok, przyznaję, że właśnie go zainstalowałem. Zdarzyło mi się restartować ręcznie serwisy i w sumie dziwiłem się, że różne skanery pokazują podatności pomimo aktualizacji. Człowiek się całe życie uczy, dzięki.
Hm, że „się podpina pod apt”, to zgoda, ale wg mnie owe podpięcie polega jedynie na tym, że przy aktualizacji pakietów jest wywoływany needrestart i wyświetlane okno dialogowe pozwalające na restart wybranych programów.
Co prawda sam program wspiera automatyczny restart (mode a – (a)utomatically restart), ale czy faktycznie jest wykonywany? Sprawdziłbym. Możliwe, że przy nieinteraktywnym wywołaniu apt działa to z restartem.
Racja, myślałem, że się samo robi, a nie miałem żadnych usług do restartowania 🙂
Teraz pomyślałem o dopisaniu `-r a` do exec /usr/sbin/needrestart w /usr/lib/needrestart/apt-pinvoke, zobaczę co z tego wyjdzie.
Pewnie to trochę nieodpowiedzialne jest, ale pewnie tak jak automatyczne aktualizacje na serwerach.
Czy nieodpowiedzialne? Zależy. Z jednej strony masz łatki tak szybko, jak to możliwe (przy korzystaniu z oficjalnych kanałów dystrybucji). Z drugiej – ryzyko padu usługi. Tylko to drugie można minimalizować na parę sposobów, choć zależy to od architektury – można wyłączyć jeden backend z użycia, zrobić upgrade i restart, włączyć go, sprawdzić czy działa (monitoring), zająć się kolejnym. No i wszystkie narzędzia typu chef czy puppet to też automaty i hurtowe działanie, więc specjalnie się od automatycznych restartów nie różnią. Zresztą coraz więcej softu ma funkcje automatycznej aktualizacji.
Ja jestem umiarkowanym zwolennikiem automatycznych aktualizacji, ale niestety nie spotkałem jeszcze dobrego, kompleksowego rozwiązania do tego. Chętnie poznam.
Jeżeli mówimy o stabilnym Debianie i standardowych repozytoriach to się zgadzam.
Może zaryzykowałbym nawet wrzucenie apt-get w crona i dodanie reboota lub needrestart -r a w anacron.daily 😛
Problem jednak się pojawia gdy są potrzebne inne narzędzia, dopisane dodatkowe repozytoria. Wtedy albo one same się aktualizują (raczej rzecz niespotykana w gnu/linux) albo wchodzimy w grząski grunt.
Niestety, w praktyce zwykle trafia się coś spoza oficjalnych. I faktycznie, jakość 3rd party repozytoriów jest… różna. W szczególności normą jest, że automatyczna aktualizacja nie działa, bo wywalą na ekran, że konieczne jest wpisanie komend do upgrade z ręki (Chef), albo paczkującym udało się zrobić konflikt pomiędzy dwiema wersjami własnego pakietu (palcem pokazywać nie będę…). No i wtedy to nie tyle grząski grunt, co regularne bagno.