在ansible寄存器变量中搜索字符串列表

在ansible寄存器变量中搜索字符串列表,ansible,Ansible,我是ansible的新手。我有一个任务,在这个任务中,当第一个任务的输出中存在一些变量列表时,我必须注册第一个任务的输出并执行第二个任务。它看起来像下面 - name: execute first task command: /tmp/somescript.sh register: output - fail: msg: when {{ item }} present in. output.stdout or output.stdlines with_items: -

我是ansible的新手。我有一个任务,在这个任务中,当第一个任务的输出中存在一些变量列表时,我必须注册第一个任务的输出并执行第二个任务。它看起来像下面

- name: execute first task
 command: /tmp/somescript.sh
 register: output
 - fail:
 msg: when {{ item }} present in. output.stdout or output.stdlines
 with_items:
        - a
        - b
        - c

您在发布代码时还没有测试输出。 应该是这样的:

 - fail:
     msg: 'Fail looking for {{ item }} in output'
   when: item not in output.stdout or item not in output.stdlines
   with_items:
        - a
        - b
        - c

正如@ilias sp所说,请看这里:

检查
fail
模块文档,了解如何构建它。我确实在ansible文档中搜索了它。我只能找到一个示例来说明如何使用一个变量而不是变量列表来实现。模块页面中唯一的示例包含
when
子句,而不是
if
子句。我这样做了,但没有找到确切的解决方案。它只包含一个变量的示例,而不是变量列表。我将按照建议尝试这样做。给你发邮件,谢谢你,兄弟。这对我有用。我在你的代码中所做的唯一改变就是去掉了when条件中的{”,因为ansible在when条件下不支持jinja格式。代码对我来说工作得很好。