如果已经使用 ansible 安装,则更快地跳过 apt

如果已经使用 ansible 安装,则更快地跳过 apt

我正在使用 ansible 部署到服务器。
即使已经安装了正确的版本,apt 阶段(它是 Ubuntu)也需要很长时间才能运行(我猜它只是运行并发现不需要安装任何东西)

示例命令:

- name: set up apt packages
  action: apt pkg=nginx=1.4.6-1ubuntu3.3 state=present update_cache=yes

(我有相当多这样的,所以需要相当长的时间)

有没有一种方法可以让 ansible “弄清楚” pkg 是否已安装并更快地运行/跳过该命令?

答案1

如果您设置,update_cache=yesAnsible 将apt-get update在每次运行游戏时运行。

Ansible 文档

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

通过删除update_cache=yes任务应该运行得更快,因为 Ansible 不需要等待apt更新其存储库。

另一个选项是使用模块注册由包创建的一些文件或路径stat。如下所示:

- stat: path=/etc/nginx/nginx.conf
  register: st

- name: set up apt packages
  action: apt pkg=nginx=1.4.6-1ubuntu3.3 state=present update_cache=yes
  when: not st.stat.exists

Ansible 文档提供了更多示例。但我建议删除该update_cache=yes参数。

相关内容