设置新的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没有解决这个问题。
答案 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.
如果您不想在缓存最近更新时更新缓存,我认为将其包含在内是一种很好的做法。