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

Ray*_*Ray 11 apt ansible

当建立一个新的Linux服务器,我通常跑apt-get updateapt-get upgrade.第一个命令更新可用软件包及其版本的列表,但它不会安装或升级任何软件包.第二个命令实际上安装了我的软件包的更新版本.

在Ansible中执行此操作的正确方法是什么?你可以这样做的一种方法是这样的:

- name: update and upgrade apt packages
  apt: >
    upgrade=yes
    update_cache=yes
    cache_valid_time=3600
Run Code Online (Sandbox Code Playgroud)

或者你可以分两步完成:

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

- name: upgrade apt packages
  apt: upgrade=yes
Run Code Online (Sandbox Code Playgroud)

如果你是第一种方式,Ansible足够聪明,知道它应该在'升级'之前运行'更新'吗?Ansible apt文档没有解决这个问题.

yda*_*coR 9

贴切模块文档并实际上表明它会首先运行更新:

在操作之前运行等效的apt-get update .可以作为软件包安装的一部分运行,也可以作为单独的步骤运行.

(强调我的)

所以这两个剧本在功能上应该是相同的.


Tar*_*han 7

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

- hosts: all
  become: yes
  tasks:
  - name: Update and upgrade apt packages
    apt:
      upgrade: yes
      update_cache: yes
      cache_valid_time: 86400 # 1 day
Run Code Online (Sandbox Code Playgroud)

cache_valid_time值是可选的。文档说:

Update the apt cache if its older than the cache_valid_time. This option is set in seconds.
Run Code Online (Sandbox Code Playgroud)

我认为如果您不想在最近更新缓存时更新缓存,那么包含此内容是一个很好的做法。