我有Ansible角色,例如
---
- name: Deploy app1
include: deploy-app1.yml
when: 'deploy_project == "{{app1}}"'
- name: Deploy app2
include: deploy-app2.yml
when: 'deploy_project == "{{app2}}"'
但我只在一个角色调用中部署了一个应用程序。当我部署多个应用程序时,我多次调用角色。但是每次有很多skipped tasks output
(来自没有通过条件的任务),我不想看到。我怎么能避免它?
答案 0 :(得分:17)
我假设你不想在运行Ansible时看到输出中跳过的任务。
在ansible.cfg文件中将此设置为false。
display_skipped_hosts = false
请注意。它仍然会输出任务的名称,虽然它不会显示"跳过"了。
更新:顺便提一下,确保ansible.cfg位于当前工作目录中。
取自ansible.cfg文件。
ansible将阅读ANSIBLE_CONFIG, ansible.cfg在当前工作目录中,.ansible.cfg中 主目录或/etc/ansible/ansible.cfg,无论哪个 首先找到。
因此,请确保在正确的ansible.cfg文件中设置display_skipped_hosts = false
。
让我知道你怎么去
答案 1 :(得分:10)
Ansible允许您使用自定义callbacks来控制其输出。
在这种情况下,您只需使用skippy
callback即可在跳过的任务中输出任何内容。
答案 2 :(得分:8)
自 ansible 2.4 起,添加了回调插件名称full_skip,以禁止在ansible输出中跳过任务名称和关键字的跳过。您可以尝试以下可行的配置:
[defaults]
stdout_callback = full_skip
答案 3 :(得分:0)
如果你不介意失去颜色,你可以通过sed管道输出来忽略跳过的任务:
weightx/y
答案 4 :(得分:-2)
如果您正在使用角色,可以使用when
取消main.yml中的包含
# roles/myrole/tasks/main.yml
- include: somefile.yml
when: somevar is defined
# roles/myrole/tasks/somefile.yml
- name: this task will only run (and be seen in the output) if somevar is defined
debug:
msg: "Hello World"