假设我有下一个简单的 Ansible 剧本:
---
tasks:
- name: Upgrade installed packages
become: true
apt:
upgrade: safe
- name: Install NGINX web server
become: true
apt:
name: nginx
state: latest
notify:
- Restart NGINX
handlers:
- name: Restart NGINX
become: true
service:
name: nginx
state: restarted
如您所见,我首先升级已安装的 APT 包,然后才确保我拥有最新的 Nginx 版本。问题是如果 Nginx 有更新,它将安装在第一个任务中,如果是这样,第二个任务将不会被标记为已更改,并且不会触发处理程序。这是真的吗?还是 Ansible 足够聪明,仅在第一个任务中升级 Nginx 时才以某种方式触发此句柄?
我想知道这个案例的最佳实践。有没有比在升级所有已安装软件包的任务之前移动所有单独的安装任务(应该在其更改时触发处理程序)更好的方法?
谢谢!