Ich unterhalte eine Herde von EC2-Servern mit ansible. Die Server werden regelmäßig mit dem apt-Modul aktualisiert und aktualisiert .
Als ich manuell versuchte, einen Server zu aktualisieren, erhielt ich die folgende Meldung:
$ sudo apt-get upgrade
Reading package lists... Done
Building dependency tree
Reading state information... Done
Calculating upgrade... Done
The following packages were automatically installed and are no longer required:
linux-headers-3.13.0-29 linux-headers-3.13.0-29-generic
linux-headers-3.13.0-32 linux-headers-3.13.0-32-generic
linux-image-3.13.0-29-generic linux-image-3.13.0-32-generic
Use 'apt-get autoremove' to remove them.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Gibt es eine Möglichkeit sudo apt-get autoremove
mit ansible zu rennen?
command
Modul jederzeit verwenden , um einen Roh-Shell-Befehl auszuführen.Antworten:
Die Unterstützung für die
apt-get
Option--auto-remove
ist ab Version 2.1 in Ansibleapt
(Optionautoremove
) integriert. Die offizielle Dokumentation finden Sie unter http://docs.ansible.com/ansible/apt_module.htmlDie Zusammenführung geschah hier .
Beachten Sie, dass
autoclean
auch ab 2.4 verfügbar istquelle
Diese vereinfachte Methode erfordert nur eine Aufgabe
quelle
Du kannst es machen mit
command
(ungetestet):Ich denke jedoch, dass es riskant sein könnte,
autoremove
automatisch zu laufen . Aufgrund von Systemadministrationsfehlern, die Sie in der Vergangenheit gemacht haben (diese können sich in Ihrem nicht lesbaren Code befinden), kann es vorkommen, dass ein benötigtes Paket fälschlicherweise als automatisch entfernbar erkannt wird und der Server dadurch nicht mehr funktioniert. Auf der anderen Seite ist es keine große Sache, nicht verwendete Pakete auf dem System zu belassen, und es kommt nur dann häufig vor, wenn Sie eine wesentliche Änderung in der Serverkonfiguration vornehmen.Daher würde ich mich von der automatischen Entfernung von Paketen fernhalten, ohne eine Bestätigung durch einen Menschen zu erhalten.
quelle
apt-mark manual <pkg>
Dies ist eine Variation der von Antonis Christofides bereitgestellten Lösung. Es ist getestet und funktioniert bei mir. Ich habe die Verwendung von ignore_errors im check-Befehl vermieden. Ansonsten wird im Allgemeinen derselbe Ansatz gewählt.
quelle
--dry-run
Premiere?apt-get -y autoremove
gibt keinen Nicht-Null-Status zurück. Es scheint also, dass Sie bedingungslos ohne das ausführen--dry-run
undchanged_when
gegen den tatsächlichen Autoremove-Aufruf prüfen könnten, denke ich.Eine Variation, die die Änderung in Paketen hervorhebt (erste Aufgabe wird entsprechend grün oder gelb gefärbt):
quelle
apt-get --dry-run autoremove | grep "to remove"
Returns auf Ubuntu 14.04,0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
aber auf Ubuntu 15.04 gibt es zurück, mit0 to upgrade, 0 to newly install, 0 to remove and 0 not to upgrade.
denen Ihr Sed nicht übereinstimmt.install
mitinstall(ed)?
oder so ähnlich.Ich mag diese vereinfachte Methode , und ich füge einige Scheck- und Drucknachrichten für mich hinzu.
Vielen Dank für Cortopy und Dave James Miller .
quelle