【问题标题】:What's correct way to upgrade APT packages using Ansible?使用 Ansible 升级 APT 包的正确方法是什么?
【发布时间】:2016-04-27 17:40:26
【问题描述】:

在设置新的 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 没有解决这个问题。

【问题讨论】:

    标签: ansible apt


    【解决方案1】:

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

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

    (强调我的)

    所以这两个剧本在功能上应该是一样的。

    【讨论】:

      【解决方案2】:

      这里是升级和更新包的更好版本。以下可执行 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.
      

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-09-05
        • 1970-01-01
        • 2019-06-08
        • 1970-01-01
        • 2019-05-29
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多