有什么方法阻止处理程序运行吗?我试着给它添加标签和使用“--跳过标签”,但是它不起作用。
我可以添加下一个角色变量reload_service: true并使用它,但是我已经开始使用标记了,它们可以很好地重新运行角色的一部分。
处理程序通常用于重新启动服务,我希望在不启动服务的情况下运行该角色,而不更改角色变量,以涵盖下一种情况。
我用的是ansible 2.1.2.0
测试用例:
mkdir -p test/role/handlers test/role/tasks cd test echo -ne '---\n - command: "echo Test"\n notify: restart\n' > role/tasks/main.yml echo -ne '---\n- name: restart\n command: "echo Handler"\n tags: [handlers]\n' > role/handlers/main.yml echo -ne '---\n- hosts: localhost\n gather_facts: false\n roles:\n - role\n' > play.yml ansible-playbook play.yml --skip-tags handlers
发布于 2017-02-24 02:06:48
Ansible中目前没有变量,它允许您测试在运行时指定了哪些标记。
正如您已经发现的,不管分配了哪些标记,处理程序都会运行。这些文档并没有清楚地说明这是一个错误还是打算采取的行为。
一些备选办法是:
when:子句为条件。发布于 2019-08-27 15:17:46
下面是一个如何使用变量跳过处理程序的示例:
$ cat test.yaml
---
- hosts: localhost
tasks:
- copy:
content: "{{ ansible_date_time.epoch }}" # This will always trigger the handler.
dest: /tmp/debug
notify:
- debug
handlers:
- name: debug
debug:
msg: Hello from the debug handler!
when:
- skip_handlers | default("false") == "false"正常使用如下所示:
$ ansible-playbook test.yaml跳过处理程序:
$ ansible-playbook test.yaml -e skip_handlers=truehttps://stackoverflow.com/questions/42093385
复制相似问题