我正在使用 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=yes
Ansible 将apt-get update
在每次运行游戏时运行。
在操作之前运行相当于 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
参数。