Ansible/Jinja2星号条件

Ansible/Jinja2星号条件,ansible,jinja2,Ansible,Jinja2,试图通过Ansible更新LDAP条目,但我想确保LDAP主机通配符(“*”)不在主机列表中。如果我在主机中不使用“*”或在主机中不使用“*”,Ansible不喜欢这些。我也尝试过Jinja2搜索过滤器。任何帮助都会很好 解决了这个问题。我试着用管道来做,不需要 when: - var is not regex("\\*") 这个问题与星号无关。这是一个纯粹的yaml语法问题 在yaml中,如果引用变量,则值的表示形式将以单引号或双引号开始,然后获得值本身和结束引号。在

试图通过Ansible更新LDAP条目,但我想确保LDAP主机通配符(“*”)不在主机列表中。如果我在主机中不使用“*”或在主机中不使用“*”,Ansible不喜欢这些。我也尝试过Jinja2搜索过滤器。任何帮助都会很好

解决了这个问题。我试着用管道来做,不需要

when:
  - var is not regex("\\*")

这个问题与星号无关。这是一个纯粹的yaml语法问题

在yaml中,如果引用变量,则值的表示形式将以单引号或双引号开始,然后获得值本身和结束引号。在这之后,yaml解析器将看到一个yank
,在您的特定情况下,一个新行将移动到下一个值定义

在您的示例中,您的
when
子句值以引号开头。因此,您必须引用您的全部价值:

当:“*”不在主机中时
#或
当:“*”不在主机中时
#甚至
当:“\”*\“不在主机中”
一个好的、可读性更高的替代IMO是使用yaml标量块标记:

when:>-
“*”不在主机中

很难理解你在问什么。尝试从你的剧本中发布片段。