Я поддерживаю множество серверов EC2 с ansible. Серверы регулярно обновляются и обновляются с использованием модуля apt .
Когда я вручную попытался обновить сервер, я получил следующее сообщение:
$ 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.
Есть ли способ запустить sudo apt-get autoremove
с ansible?
command
модуль для выполнения необработанной команды оболочки.Ответы:
Поддержка этой
apt-get
опции--auto-remove
теперь встроена в Ansibleapt
(опцияautoremove
) начиная с версии 2.1 Официальная документация находится по адресу http://docs.ansible.com/ansible/apt_module.html.Слияние произошло здесь .
Обратите внимание, что
autoclean
также доступно с 2.4источник
Этот упрощенный метод требует только одну задачу
источник
Вы можете сделать это с помощью
command
(не проверено):Тем не менее, я думаю, что запускать
autoremove
автоматически может быть рискованно . Из-за ошибок системного администрирования, которые вы допустили в прошлом (это может быть в вашем коде ANSI), вполне возможно, что необходимый пакет может в какой-то момент быть ошибочно определен как автоматически удаляемый, и это может помешать работе сервера. С другой стороны, нет ничего страшного в том, чтобы оставить неиспользуемые пакеты в системе, и это не очень часто, если вы не внесете серьезные изменения в настройку сервера.Таким образом, я бы держался подальше от автоматического удаления пакетов без подтверждения от человека.
источник
apt-mark manual <pkg>
Это вариант решения, предоставленного Антонисом Христофидесом. Это проверено и работает для меня. Я избегал использования ignore_errors в команде проверки. В противном случае обычно используется тот же подход.
источник
--dry-run
первого?apt-get -y autoremove
не возвращает ненулевой статус. Так что, кажется, вы могли бы безоговорочно работать без--dry-run
и проверитьchanged_when
против фактического вызова автоматического удаления, я думаю.Вариант, который выделяет изменения в пакетах (первая задача будет соответствующим образом окрашена в зеленый или желтый цвет):
источник
apt-get --dry-run autoremove | grep "to remove"
возвращает в Ubuntu 14.04,0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
но в Ubuntu 15.04 оно возвращает то,0 to upgrade, 0 to newly install, 0 to remove and 0 not to upgrade.
что ваш sed не соответствует.install
сinstall(ed)?
или что - то подобное.Мне нравится этот упрощенный метод , и я добавляю некоторые проверки и распечатать сообщение для меня.
Спасибо за Cortopy и Дейв Джеймс Миллер .
источник