Utrzymuję stado serwerów EC2 z ansible. Serwery są regularnie aktualizowane i uaktualniane za pomocą modułu apt .
Kiedy ręcznie próbowałem zaktualizować serwer, otrzymałem następujący komunikat:
$ 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.
Czy istnieje sposób na uruchomienie sudo apt-get autoremove
z ansible?
command
modułu, aby wykonać polecenie surowej powłoki.Odpowiedzi:
Obsługa tej
apt-get
opcji--auto-remove
jest teraz wbudowana w Ansibleapt
(opcjaautoremove
) od wersji 2.1 Oficjalna dokumentacja znajduje się na stronie http://docs.ansible.com/ansible/apt_module.htmlScalenie miało miejsce tutaj .
Pamiętaj, że
autoclean
jest również dostępny od wersji 2.4źródło
Ta uproszczona metoda wymaga tylko jednego zadania
źródło
Możesz to zrobić za pomocą
command
(nieprzetestowane):Myślę jednak, że
autoremove
automatyczne uruchamianie może być ryzykowne . Z powodu błędów administrowania systemem, które popełniłeś w przeszłości (mogą być w kodzie ansible), możliwe, że potrzebny pakiet może w pewnym momencie zostać fałszywie wykryty jako autorovable, co może uniemożliwić działanie serwera. Z drugiej strony nie jest wielkim problemem pozostawianie nieużywanych pakietów w systemie i nie jest to zbyt częste, chyba że wprowadzisz poważną zmianę w konfiguracji serwera.Dlatego trzymałbym się z dala od autorów paczek bez potwierdzenia od człowieka.
źródło
apt-mark manual <pkg>
Jest to odmiana dostarczonego rozwiązania Antonis Christofides. Jest przetestowany i działa dla mnie. Unikałem używania ignore_errors w poleceniu check. W przeciwnym razie ogólnie przyjmuje to samo podejście.
źródło
--dry-run
pierwszego?apt-get -y autoremove
nie zwraca stanu niezerowego. Wygląda więc na to, że można bezwarunkowo biec bez--dry-run
i sprawdzić,changed_when
jak sądzę, z prawdziwym wezwaniem autorów.Odmiana podkreślająca zmianę w pakietach (pierwsze zadanie będzie odpowiednio oznaczone kolorem zielonym lub żółtym):
źródło
apt-get --dry-run autoremove | grep "to remove"
zwrotów na Ubuntu 14.04,0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
ale na Ubuntu 15.04 zwraca,0 to upgrade, 0 to newly install, 0 to remove and 0 not to upgrade.
których twój sed nie pasuje.install
zinstall(ed)?
lub coś podobnego.Podoba mi się ta uproszczona metoda i dodaję dla mnie wiadomość do sprawdzenia i wydrukowania.
Dziękuję za kortopię i Dave'a Jamesa Millera .
źródło