ansible - Ansible 处理程序 - 独占重启或重新加载
问题描述
我有许多 Ansible 角色,它们通知处理程序重新启动或重新加载 systemd 服务。如果通知重新启动,显然不需要重新加载相同的服务,并且尝试同时执行这两种操作可能会导致失败,因为重新启动后重新加载来得太快。有没有办法配置处理程序,以便重新加载任务仅在重新启动任务未运行时触发?
下面是我当前的重新启动/重新加载处理程序的示例。
- name: Restart foo service
systemd:
name: foo
daemon_reload: yes
state: restarted
become: yes
- name: Reload foo service
systemd:
name: foo
daemon_reload: yes
state: reloaded
become: yes
解决方案
您可以从处理程序通知处理程序,因此您可以实现您想要的,例如以这种方式(或使用逻辑运算符):
- name: Restart foo service
set_fact:
foo_state: restarted
changed_when: true
notify: Reload foo service
- name: Reload foo service
systemd:
name: foo
daemon_reload: yes
state: "{{ foo_state | default('reloaded') }}"
become: yes
处理程序名称是一个偏好问题,我将它们原样保留。
推荐阅读
- python - 使用张量流更快的 for 循环
- php - 无法使用 php 在 pami 包中获取来电显示号码、目的地号码和通话时间
- tls1.2 - 我正在使用最新版本的 websockify 0.8.0,但它不支持 TLS-1.2
- android - Android firebaseauth.getCurrentUser() 在 firebase 中返回 null
- php - 如何使用 xpath (php) 查询 xml 文件?
- php - 如何在没有身份验证的情况下创建 JWT 令牌
- mysql - Google Sheets JDBC 脚本中的西里尔文数据库内容
- sql - 如何根据在 oracle 中具有空值的列从两个不同的列中进行选择
- python - Pygame 表面位置似乎与屏幕上的位置不同?
- python - Cython - 动态 2D C++Array 的 Memoryview