如何从include语句中过滤任务

时间:2016-12-09 20:13:04

标签: ansible ansible-playbook

目前,我会传递一个参数来包含并在另一个文件中使用该变量来有条件地检查要执行的块。

例如

- include: tasks/common.yml param=dns

任务/ common.yml:

---
- block:
  - name: do something interesting
    when: param == "dns"
- block:
  - name: do another thing
    when: param == "ip"

此方法在我的输出中有效但所有与条件不匹配的任务都显示为跳过。由于我有几十个任务并试图重用其中的一些,我看到很多跳过任务。

这样做有更好的方法吗?使用ansible 2.2

1 个答案:

答案 0 :(得分:0)

在剧本或ansible参数中没有对此的支持。一种方法是将ansible配置为不显示跳过的任务。

请参阅:stdout_callback

  

2.0版中的新功能。

     

此设置允许您覆盖默认的stdout回调   ansible-剧本:

     

stdout_callback = skippy

编辑您的ansible配置文件(通常为/etc/ansible/ansible.cfg)并在defaults部分

下添加此行
stdout_callback = skippy

告诉ansible不要显示跳过的任务。

在设置为skippy之前

TASK [Run scripts] *************************************************************
changed: [localhost] => (item=1)
skipping: [localhost] => (item=2)

设置为skippy

TASK [Run scripts] *************************************************************
changed: [localhost] => (item=1)