什么';使用Ansible升级APT软件包的正确方法是什么?

什么';使用Ansible升级APT软件包的正确方法是什么?,ansible,apt,Ansible,Apt,在设置新的Linux服务器时,我通常会运行apt get update,然后运行apt get upgrade。第一个命令更新可用软件包及其版本的列表,但不安装或升级任何软件包。第二个命令实际上安装了我拥有的软件包的更新版本 在Ansible中,正确的方法是什么?你可以这样做: - name: update and upgrade apt packages apt: > upgrade=yes update_cache=yes cache_valid_time=

在设置新的Linux服务器时,我通常会运行
apt get update
,然后运行
apt get upgrade
。第一个命令更新可用软件包及其版本的列表,但不安装或升级任何软件包。第二个命令实际上安装了我拥有的软件包的更新版本

在Ansible中,正确的方法是什么?你可以这样做:

- name: update and upgrade apt packages
  apt: >
    upgrade=yes
    update_cache=yes
    cache_valid_time=3600
或者,您可以通过两个单独的步骤来完成:

- name: update apt packages
  apt: >
    update_cache=yes
    cache_valid_time=3600

- name: upgrade apt packages
  apt: upgrade=yes
如果您使用第一种方法,Ansible是否足够聪明,知道它应该在“升级”之前运行“更新”?Ansible没有解决这个更精细的问题。

实际上声明它将首先运行更新:

在操作之前运行apt get update。可以运行 作为软件包安装的一部分或作为单独的步骤

(强调矿山)


因此,这两个重头戏在功能上应该是相同的。

以下是升级和更新软件包的更好版本。以下可执行playbook将更新和升级包到清单文件中指定的所有主机

-主机:所有
变成:是的
任务:
-名称:更新和升级apt软件包
恰当的:
升级:是的
更新缓存:是
缓存有效时间:86400#1天
cache\u valid\u time
值是可选的。其目的来自文件:

我认为,如果您不想在缓存最近才更新时更新缓存,那么最好将其包括在内

Update the apt cache if its older than the cache_valid_time. This option is set in seconds.