Wie kann ich apt auf mehreren Computern effizient verwalten?


11

Ich verwalte ungefähr 30 Ubuntu-Server mit Puppet. Ich habe viele Hinweise auf Cron-Apt und Apticron als Ansätze gesehen, um ihre Pakete auf dem neuesten Stand zu halten, aber ich konnte keinen Weg finden, den Prozess zentral zu verwalten. Mit cront-apt / apticron müsste ich mich immer noch bei jedem Host anmelden und ausführen aptitude update, um das Update durchzuführen. Ganz zu schweigen von Überprüfungsbenachrichtigungen von allen 30 Computern, wenn ein Kernpaket aktualisiert wird.

Es muss einen besseren Weg geben. Irgendwelche Vorschläge?

Antworten:


3

Landschaft könnte für Sie von Interesse sein. Dies ist das "offizielle" Verwaltungstool für die Verwaltung großer Ubuntu-Bereitstellungen, und Canonical ist wahrscheinlich sehr daran interessiert, Ihre Dollars für die Verwendung zu erhalten.

RE-EDIT:

Erstens ein Haftungsausschluss; Ich habe keine Spiegelung für Debian oder Ubuntu verwendet, daher bin ich mit der Software nicht vertraut.

Zweitens scheint es, dass Apt-Mirror eine "zu schwere" Lösung wäre, entschuldige ich mich. Die ursprüngliche Idee war, dass Sie eine separate Testmaschine (oder Testumgebung, wahrscheinlich eine virtuelle Maschine?) Haben würden, auf der Sie das Update bereitstellen können. Sobald Sie mit der Leistung des Updates zufrieden sind, ziehen Sie das Paket in Ihren "Bereitstellungs" -Spiegel (es gibt den lokalen Spiegel aus den offiziellen Quellen und einen sekundären Spiegel nur für Updates, die Sie bereitstellen möchten). Die Remote-Computer führen dann zu einem voreingestellten Zeitpunkt ein Update aus und ziehen es von Ihrem "Bereitstellungs" -Spiegel auf jeden Computer. Ein Cron-Job besteht aus:

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

Leider, als ich anfing, die Details durchzulesen, scheint es, dass apt-mirroralle möglichen Dinge und nicht nur die Pakete, nach denen Sie suchen, gezogen werden. Also werde ich diese Idee aufgeben, obwohl das Konzept einen gewissen Wert hat.


Landschaft sieht interessant aus. Ich muss mir das genauer ansehen. Mir ist nicht klar, wie das Ausführen eines lokalen Apt-Spiegels (was ich derzeit mache) mir helfen würde, ausstehende Updates zu genehmigen / zu überprüfen. Können Sie das klarstellen?
Insyte

14

Ein Mitarbeiter hat apt-dater entdeckt und kurz untersucht, bei dem es sich um einen "Terminal-basierten Remote-Paket-Update-Manager" handelt.

Sie verwenden eine fluchbasierte Oberfläche, um Aktualisierungen auf allen Ihren Hosts oder Hostgruppen usw. zu verwalten. Unterstützt die Protokollierung der vollständigen apt-Sitzung, einschließlich eventuell auftretender Fehler usw.

Verlässt sich auf ssh und sudo auf den verwalteten Maschinen.

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

Ich habe es selbst nicht benutzt, daher kann ich es nicht unterstützen, aber es klingt nah an dem, wonach Sie suchen.


Das sieht sehr vielversprechend aus. Insyte, ich werde diese Antwort meiner eigenen empfehlen. Sie können zwar alle von mir beschriebenen Schritte ausführen, möchten aber wirklich die Zeit dafür investieren, wenn Sie dies wahrscheinlich sehr schnell einrichten und einfach mit dem Leben weitermachen können? @ Jeff, +1 für einen schönen Vorschlag.
Avery Payne

4

Da Sie Puppet bereits verwenden, können Sie dies am einfachsten (und am besten für Änderungskontroll- / Verfolgungszwecke) tun, indem Sie die gewünschte Version der Pakete angeben, die im Puppet-Manifest installiert werden sollen. Sie behalten die Liste der Sicherheitsankündigungen im Auge, und wenn etwas, das Sie verwenden, durchkommt, aktualisieren Sie einfach Puppet und sagen "Installieren Sie diese neue Version dieses Pakets". Angenommen, Sie verwenden die Revisionskontrolle für Ihre Manifeste, dann wissen Sie, wann die "Richtlinie" geändert wurde, und die Berichte von Puppet zeigen Ihnen genau, wann die Änderung tatsächlich vorgenommen wurde (damit Sie dies leicht mit späteren Protokollereignissen korrelieren können).


Das ist so ziemlich das, was wir tun. Wir verwenden nicht den Puppet-Pakettyp, da dies dazu führen würde, dass jeder Server jedes Paket installiert. Stattdessen schreiben wir eine Datei mit dem Paketnamen und der Version auf den Server und verwenden sie dann mithilfe eines Skripts, um zu überprüfen, ob sie installiert sind, und versuchen dann, sie zu installieren. Der zweite Teil ist ein Skript, das meinen E-Mail-Ordner mit Apticron-E-Mails liest und alle Pakete abruft, die aktualisiert und die Manifestdatei neu geschrieben werden muss. Wir sind uns noch nicht ganz sicher, wie gut diese Methode funktioniert.
David Pashley

2
Warum sollte der Puppet-Pakettyp alle Pakete auf jedem Computer installieren? Sie ordnen die Zeilengruppen für jedes Paket der entsprechenden Klasse oder dem definierten Typ zu, sodass sie nur auf den entsprechenden Computern installiert werden. Wenn Sie die Versionsliste in einer Datei zentralisieren möchten, verfügen Sie über eine große Liste virtueller Ressourcen und realisieren Sie diese bei Bedarf.
womble

2

Schauen Sie sich clusterssh an (apt-get install clusterssh):

$ cssh server1 server2 server3 ...


1
Dies funktioniert tatsächlich immer noch in 10.9.3 ... es ist irgendwie komisch, es zu benutzen
Jonathan S. Fisher

1

Ohne vorher wirklich darüber nachgedacht zu haben, wäre meine erste Idee etwas Ähnliches wie das, was avery vorgeschlagen hat, besonders wenn Sie bereits eine Testumgebung haben.

Grundsätzlich stellen Sie Ihre Produktionsmaschinen so ein, dass sie automatisch von Ihrem eigenen lokalen Repo aktualisiert werden, und Sie aktualisieren dieses Repo erst, nachdem Sie Ihre Testumgebung auf die neueste Version von allem aktualisiert haben, was Sie ausführen.

Apticron lässt sich nicht gut skalieren, es wurde entwickelt, um in ziemlich kleinen Umgebungen ausgeführt zu werden, aber es hat einige gute Punkte:

  • Sie erhalten nicht nur eine Liste, sondern auch die Änderungsprotokolle für zu aktualisierende Pakete.
  • Um die Änderungsprotokolle zu erhalten, werden die Pakete heruntergeladen. Wenn Sie also ein Upgrade durchführen, müssen Sie nicht warten, bis sie heruntergeladen sind.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.