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

时间:2016-04-27 17:40:27

标签: 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=3600

或者你可以分两步完成:

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

- name: upgrade apt packages
  apt: upgrade=yes

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

3 个答案:

答案 0 :(得分:9)

apt module documentation确实声明它将首先运行更新:

  

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

(强调我的)

所以这些剧本在功能上应该是相同的。

答案 1 :(得分:0)

以下是the correct way to upgrade apt packages using ansible是否未知,但这更新了系统上的软件包:

- name: Upgrade all packages to the latest version
  apt:
    update_cache: yes
    upgrade: yes

答案 2 :(得分:0)

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

- hosts: all
  become: yes
  tasks:
  - name: Update and upgrade apt packages
    apt:
      upgrade: yes
      update_cache: yes
      cache_valid_time: 86400 # 1 day

cache_valid_time 值是可选的。它来自文档的目的:

<块引用>
Update the apt cache if its older than the cache_valid_time. This option is set in seconds.

如果您不想在缓存最近更新时更新缓存,我认为将其包含在内是一种很好的做法。