Jak mogę skutecznie zarządzać apt na wielu komputerach?

11

Za pomocą marionetki zarządzam około 30 serwerami Ubuntu. Widziałem wiele odniesień do cron-apt i apticron jako podejść do aktualizowania ich pakietów, ale nie byłem w stanie znaleźć sposobu na centralne zarządzanie procesem. W cront-apt / apticron nadal musiałbym zalogować się do każdego hosta i uruchomić, aptitude updateaby wykonać aktualizację. Nie wspominając o powiadomieniach z przeglądu ze wszystkich 30 komputerów, gdy aktualizowany jest pakiet podstawowy.

Musi być lepszy sposób. Jakieś sugestie?

Insyte
źródło

Odpowiedzi:

3

Krajobraz może Cię zainteresować. Jest to „oficjalne” narzędzie do zarządzania dużymi wdrożeniami Ubuntu, a Canonical prawdopodobnie bardzo chętnie zdobędzie twoje dolary na jego wykorzystanie.

PONOWNIE EDYCJA:

Po pierwsze, wyłączenie odpowiedzialności; Nie używałem dublowania dla Debiana ani Ubuntu, więc nie znam oprogramowania.

Po drugie, wydaje się, że apt-mirror byłoby rozwiązaniem „zbyt ciężkim”, przepraszam. Pierwotnym pomysłem było posiadanie osobnej maszyny testowej (lub środowiska testowego, prawdopodobnie maszyny wirtualnej?) Do wdrożenia aktualizacji. Gdy będziesz zadowolony z wydajności aktualizacji, ściągniesz / umieścisz pakiet w swoim „wdrożonym” serwerze lustrzanym (będzie lokalny serwer lustrzany z oficjalnych źródeł oraz drugi serwer lustrzany dla tylko aktualizacji, które chcesz wdrożyć). Zdalne komputery uruchomiłyby aktualizację we wcześniej ustalonym czasie i wyciągnęły ją z kopii lustrzanej „wdrażania” na każdą maszynę, zadanie CRON obejmujące:

apt-get update && apt-get upgrade --quiet --assume-yes

Niestety, kiedy zacząłem czytać szczegółowe informacje, wydaje się, że apt-mirrorwyciągną one różne rzeczy, a nie tylko pakiety, których szukasz. Więc zrezygnuję z tego pomysłu, chociaż koncepcja ma pewne zalety.

Avery Payne
źródło
Krajobraz wygląda interesująco. Będę musiał przyjrzeć się temu bliżej. Nie jestem pewien, w jaki sposób uruchomienie lokalnego serwera kopii dystrybucyjnej (co obecnie robię) pomogłoby mi zatwierdzić / sprawdzić oczekujące aktualizacje. Czy możesz to wyjaśnić?
Insyte,
14

Współpracownik odkrył i krótko przyjrzał się apt-dater, który jest „opartym na terminalu zdalnym menedżerem aktualizacji pakietów”.

Korzystasz z interfejsu opartego na przekleństwach, aby zarządzać aktualizacjami na wszystkich swoich hostach lub grupach hostów itp. Obsługuje rejestrowanie pełnej sesji apt, w tym wszelkich napotkanych błędów itp.

Opiera się na ssh i sudo na zarządzanych komputerach.

patrz http://www.ibh.de/apt-dater/

Nie korzystałem z niej sam, więc nie mogę tego poprzeć, ale brzmi to tak, jakbyś tego szukał.

Jeff
źródło
To wygląda bardzo obiecująco. Insyte, polecę tę odpowiedź ponad własną. Chociaż możesz wykonać wszystkie kroki, które opisałem, czy naprawdę chcesz zainwestować w to czas, kiedy prawdopodobnie możesz zrobić to bardzo szybko i po prostu żyć dalej? @Jeff, +1 za miłą sugestię.
Avery Payne,
4

Ponieważ już korzystasz z Puppet, najłatwiejszym sposobem (i najlepszym do kontroli / śledzenia zmian) jest określenie żądanej wersji pakietów, które chcesz zainstalować w manifeście marionetkowym. Macie oko na listę powiadomień bezpieczeństwa, a kiedy coś, z czego korzystacie, przechodzi przez aktualizację, Puppet mówi „zainstaluj nową wersję tego pakietu”. Zakładając, że używasz kontroli wersji w swoich manifestach, wtedy wiesz, kiedy „zasady” zostały zmienione, a raporty Puppet pokazują dokładnie, kiedy faktycznie wprowadzono zmianę (dzięki czemu możesz łatwo skorelować to z późniejszymi zdarzeniami dziennika).

womble
źródło
To właściwie to, co robimy. Nie używamy typu pakietu marionetkowego, ponieważ spowoduje to, że każdy serwer zainstaluje każdy pakiet. Zamiast tego piszemy na serwerze plik z nazwą i wersją pakietu, a następnie używamy skryptu, aby je przejrzeć i sprawdzić, czy są zainstalowane, a następnie spróbować je zainstalować. Druga część to skrypt, który odczytuje mój folder poczty z e-mailami apticron i pobiera wszystkie pakiety, które wymagają aktualizacji i przepisuje plik manifestu. Nie jesteśmy jeszcze całkowicie pewni, jak dobrze ta metoda działa.
David Pashley,
2
Dlaczego typ pakietu Puppet instalowałby wszystkie pakiety na każdym komputerze? Umieszczasz sekcje dla każdego pakietu w odpowiedniej klasie lub zdefiniowanym typie, dzięki czemu jest instalowany tylko na odpowiednich komputerach. Jeśli chcesz scentralizować listę wersji w jednym pliku, przygotuj dużą listę zasobów wirtualnych, a następnie zrealizuj je w razie potrzeby.
womble
2

Spójrz na clusterssh (apt-get install clusterssh):

$ cssh serwer1 serwer2 serwer3 ...

Thiago Figueiro
źródło
1
To faktycznie działa nadal w 10.9.3 ... to trochę zabawne, aby go używać
Jonathan S. Fisher
1

Bez wcześniejszego zastanowienia się nad tym, moim pierwszym pomysłem byłoby coś podobnego do tego, co sugerował Avery, szczególnie jeśli masz już środowisko testowe.

Zasadniczo ustawiasz maszyny produkcyjne na automatyczne uaktualnianie z własnego lokalnego repozytorium i aktualizujesz to repozytorium dopiero po aktualizacji środowiska testowego do najnowszej wersji tego, co uruchomisz.

Apticron nie skaluje się dobrze, jest zaprojektowany do pracy w dość małych środowiskach, ale ma kilka dobrych zalet:

  • Nie tylko wysyła ci listę, ale także dzienniki zmian pakietów do aktualizacji.
  • Aby uzyskać dzienniki zmian, pobiera pakiety, więc po aktualizacji nie musisz czekać na ich pobranie.
inne
źródło