Best Practices, um UNIX-Pakete auf dem neuesten Stand zu halten?

30
  • Wie halten Sie Ihre Server auf dem neuesten Stand?
  • Führen Sie bei Verwendung eines Paketmanagers wie Aptitude einen Upgrade- / Installationsverlauf durch, und wenn ja, wie?
  • Gibt es beim Installieren oder Aktualisieren von Paketen auf mehreren Servern Möglichkeiten, den Prozess so weit wie möglich zu beschleunigen?
Aron Rotteveel
quelle

Antworten:

19

Auf Linux / Debian-basierten Systemen ist cron-apt ein sehr praktisches Tool, das die Automatisierung von apt über cron verwalten kann.

Ich benutze es apt-get updatejeden Tag und sende mir eine E-Mail, wenn neue Updates installiert werden müssen.

Hier ist eine kurze und gut gemachte Einführung in dieses Tool .

paulgreg
quelle
Ich möchte ein Minimum an automatisch aktualisierten Paketen haben, und die wichtigsten sind die Sicherheitsupdates. Aus diesem Grund füge ich Folgendes zur cron-apt-Konfigurationsdatei hinzu: OPTIONS="-o Dir::Etc::SourceList=/etc/apt/security.sources.list" und mache dann, dass /etc/apt/security.sources.list nur die Debian-Sicherheits-Repositorys aktiviert hat. Auf diese Weise bekomme ich alle Sicherheitsupdates automatisch rechtzeitig (jede Nacht) installiert und kann andere, riskantere Upgrades durchführen, die möglicherweise von Hand gehen.
Drew Stephens
10

Zu Ihrer dritten Frage: Ich führe immer ein lokales Repository. Selbst wenn es sich nur um eine Maschine handelt, spart es Zeit, wenn ich sie neu installieren muss (ich verwende im Allgemeinen so etwas wie aptitude autoclean), und bei zwei Maschinen zahlt es sich fast immer aus.

Bei den Clustern, die ich verwalte, werden im Allgemeinen keine expliziten Protokolle geführt: Ich überlasse es dem Paketmanager, dies für mich zu tun. Für diese Computer (im Gegensatz zu Desktops) verwende ich jedoch keine automatischen Installationen, sodass ich meine Notizen darüber habe, was ich auf allen Computern installieren möchte.

Mikeage
quelle
4
Wow; stimmen alle zu, weil ich so brillant bin, oder rennen die Leute darum, ein Abzeichen zu bekommen? ;)
Mikeage
4

Ich benutze apt-history für die Geschichte. Ich habe keine Ahnung, warum dieses nützliche Tool nicht standardmäßig enthalten ist, es ist das erste Paket, das ich mit Puppet bereitstelle .

Kennzeichen
quelle
Wie unterscheidet sich apt-history von dem, was standardmäßig in / var / log aufgezeichnet wird?
Jldugger
Mir war nicht bewusst, worauf Sie sich beziehen (aus Ihrer Antwort); Ich glaube, ich habe die passende Geschichte kennengelernt und mich daran gewöhnt.
Marke
3

Ich führe / usr / bin / apt-get update -qq; / usr / bin / apt-get dist-upgrade -duyq jede Nacht als Cron-Job aus. Am Morgen habe ich eine Benachrichtigung darüber, welche Pakete aktualisiert werden müssen, und die Dateien wurden bereits auf den Computer heruntergeladen.

Dann mache ich normalerweise einen Snapshot der Maschine (die meisten unserer Server sind virtuell), führe ein passendes Dist -Upgrade durch , überprüfe Nagios und stelle sicher, dass alles noch funktioniert, und entferne den Snapshot.

Schließlich führe ich eine Liste aller Änderungen, die an jedem Server in einem Wiki vorgenommen wurden , um später auftretende Probleme nachzuverfolgen.

Soweit es um die Begrenzung redundanter Downloads geht, können Sie einen Web-Proxy- Cache (Squid?) Zwischen Ihren Servern und dem Internet einrichten , über den die .deb-Dateien beim ersten Zugriff zwischengespeichert werden. Dies ist möglicherweise einfacher als das Einrichten eines lokalen Paket-Repositorys - und hat den zusätzlichen Vorteil, dass das allgemeine Surfen im Internet beschleunigt wird.

Brent
quelle
1

apt-cacher ist praktisch zum Zwischenspeichern von Paketen. Es wird beim ersten Mal zwischengespeichert, anstatt eine vollständige Spiegelung des gesamten Repositorys durchzuführen, wodurch Speicherplatz und Bandbreite gespart werden. Dies ist auch praktisch, da die erste Anforderung eines Pakets direkt an den Anforderer gesendet und gleichzeitig zwischengespeichert wird, sodass keine zusätzliche Verzögerung entsteht.

Adam Gibbins
quelle
1

Das Ausführen eines lokalen Repositorys ist der beste Weg, um genau zu verwalten, was sich auf Ihren lokalen Servern befindet. Außerdem können Sie auf einfache Weise benutzerdefinierte Backports oder benutzerdefinierte lokale Pakete bereitstellen. Es ist bekannt, dass ich lokale 'Metapakete' erstelle, die nur eine riesige Menge von Abhängigkeiten aufweisen, um eine lokale Installation zu vereinfachen. (zB 'apt-get install local-mailserver'). Dies hat den Nebeneffekt, dass Sie auch Ihre Konfigurationsänderungen "versionieren" können. (Für eine kompliziertere Konfigurationsverwaltung benötigen Sie so etwas wie Puppet)

pjz
quelle
1

Für unsere Windows-Boxen haben wir einen lokalen WSUS-Server und ein Standardfenster zum Anwenden der monatlichen Patches. Für die Linux-Systeme (RHEL) haben wir einen RHN-Satellitenserver auf dem Campus, mit dem sie alle verbunden sind. Dies bietet ein schönes Dashboard für jedes verbundene System, das Sie verwalten, sowie die nicht angewendeten Aktualisierungen für jedes System. Für diejenigen, die sich in Puppet befinden, veröffentlichen wir ein Skript, das während eines regulären Fensters automatisch Patches anwendet und eine E-Mail-Benachrichtigung mit den Ergebnissen sendet.

Scott Pack
quelle
0

Sie können über ein lokales Repository verfügen und alle Server so konfigurieren, dass sie für Updates darauf verweisen. Sie erhalten nicht nur die Geschwindigkeit lokaler Downloads, sondern können auch steuern, welche offiziellen Updates auf Ihrer Infrastruktur installiert werden sollen, um Kompatibilitätsprobleme zu vermeiden.

Auf der Windows-Seite habe ich Windows Server Update Services mit sehr zufriedenstellenden Ergebnissen verwendet.

macbirdie
quelle
0

Führen Sie bei Verwendung eines Paketmanagers wie Aptitude einen Upgrade- / Installationsverlauf durch, und wenn ja, wie?

apt speichert ein Log in / var / log / apt / und dpkg verwendet /var/log/dpkg.log. Insbesondere dpkg ist ziemlich analysierbar.

Jldugger
quelle
0

Unter OpenSuSE Linux, SLES und Novell OES (alle SuSE-basierten Produkte) gibt es ein Skript, das zypper ausführt und nach Paketen sucht, die aktualisiert werden müssen. Wenn es eines findet, sendet es ein Ticket an JIRA und weist es den Sysadmins zu. Wenn wir die Updates installieren, schließen wir das Ticket, das einen Audit-Trail hinterlässt, der angibt, wann und von wem es installiert wurde. Dies kann mit den Zypper- und Sudo-Protokollen abgeglichen / bestätigt werden, die auf einem Syslogging-Server zentralisiert sind.

Karl Katzke
quelle