如何在Ansible

时间:2016-08-28 08:56:42

标签: plugins output ansible

我有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(来自没有通过条件的任务),我不想看到。我怎么能避免它?

5 个答案:

答案 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"