Je maintiens un troupeau de serveurs EC2 avec ansible. Les serveurs sont régulièrement mis à jour et mis à niveau à l' aide du module apt .
Lorsque j'ai essayé manuellement de mettre à niveau un serveur, j'ai reçu le message suivant:
$ 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.
Existe-t-il un moyen de fonctionner sudo apt-get autoremove
avec Ansible?
command
module pour exécuter une commande shell brute.Réponses:
La prise en charge de l'
apt-get
option--auto-remove
est désormais intégrée à Ansibleapt
(optionautoremove
) à partir de la version 2.1 La documentation officielle est disponible à l' adresse http://docs.ansible.com/ansible/apt_module.htmlLa fusion s'est produite ici .
Notez qu'il
autoclean
est également disponible à partir de la version 2.4la source
Cette méthode simplifiée nécessite une seule tâche
la source
Vous pouvez le faire avec
command
(non testé):Cependant, je pense qu'il pourrait être risqué de s'exécuter
autoremove
automatiquement. En raison d'erreurs d'administration système que vous avez commises dans le passé (celles-ci pourraient être dans votre code ansible), il est possible qu'un package nécessaire soit à un moment donné détecté à tort comme amovible, ce qui pourrait empêcher le serveur de fonctionner. D'un autre côté, ce n'est pas grave de laisser des paquets inutilisés sur le système, et ce n'est pas très courant à moins que vous n'apportiez un changement majeur dans la configuration du serveur.Par conséquent, je resterais à l'écart des paquets à suppression automatique sans confirmation d'un humain.
la source
apt-mark manual <pkg>
Il s'agit d'une variante de la solution proposée par Antonis Christofides. Il est testé et fonctionne pour moi. J'ai évité d'utiliser ignore_errors dans la commande check. Sinon, il adopte généralement la même approche.
la source
--dry-run
première?apt-get -y autoremove
ne renvoie pas un état différent de zéro. Il semble donc que vous puissiez exécuter sans condition--dry-run
et vérifier parchanged_when
rapport à l'appel réel de suppression automatique, je pense.Une variation qui met en évidence le changement dans les packages (la première tâche sera de couleur verte ou jaune appropriée):
la source
apt-get --dry-run autoremove | grep "to remove"
retours sur Ubuntu 14.04,0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
mais sur Ubuntu 15.04, il renvoie0 to upgrade, 0 to newly install, 0 to remove and 0 not to upgrade.
ce que votre sed ne correspond pas.install
parinstall(ed)?
ou quelque chose comme ça.J'aime cette méthode simplifiée et j'ajoute un message de vérification et d'impression pour moi.
Merci pour cortopy et Dave James Miller .
la source