在任务条件下使用ansible变量 当我在failed_When条件中使用Ansible变量时,Ansible抱怨并失败,告诉我不能在failed_When中使用Jinja2表达式
以下代码段不起作用:在任务条件下使用ansible变量 当我在failed_When条件中使用Ansible变量时,Ansible抱怨并失败,告诉我不能在failed_When中使用Jinja2表达式,ansible,conditional-statements,jinja2,Ansible,Conditional Statements,Jinja2,以下代码段不起作用: vars: var1: "var" tasks: - name: "sth" raw: "anothersth" register: status failed_when: var1 in status.stdout 我想在上面的示例中使用regex,并在regex中使用变量var1。这也失败了。 如果var1在stdout_行的开头和结尾重复,我希望任务失败。我是这样想的: 在status.stdout中的rege
vars:
var1: "var"
tasks:
- name: "sth"
raw: "anothersth"
register: status
failed_when: var1 in status.stdout
- 使用“raw”模块运行命令并注册标准输出行
- 迭代项目列表,其中列表是当前ansible主机的事实
- 在已注册的标准输出中搜索模式时使用failed_,如果未找到,则任务将失败
peers\u参考底图:
-ip:“172.16.1.2”
-ip:“172.16.1.6”
这就是剧本:
-主机:叶-2,脊椎-1
收集事实:不
标签:[验证]
变量:
bgp_参考底图:“显示ip bgp摘要”
任务:
-名称:“基线bgp测试”
原始:{{bgp_参考底图}}”
寄存器:参考底图状态
带_项:“{{peers_underlay}”
当:在参考底图状态下不是正则表达式(.*/{{item['ip']}/*/Estab/*])时失败。标准输出行
Q:“如果var1在开始和结束时重复,则任务失败。”
A:有可能。例如,使用regex
-hosts:localhost
变量:
my_stdout1:“ABC dlkjfsldkfjsldkfj ABC”
我的stdout2:'alkdflaksdjflaksjdflaksdjflasj'
var1:‘ABC’
my_regex:“^{{var1}}(.*){{var1}}$”
任务:
-调试:
msg:my_regex匹配my_stdout1
何时:my_stdout1是正则表达式(my_regex)
-调试:
msg:my_regex与my_stdout2匹配
时间:my_stdout2是正则表达式(my_regex)
给予
“msg”:“我的正则表达式与我的stdout1匹配”
特定的任务顺序是
vars:
var1:“var”
my_regex:“^{{var1}}(.*){{var1}}$”
任务:
-名称:“某物”
raw:“另一个”
注册:状态
当:status.stdout为正则表达式(my_regex)时失败
谢谢。这可能有助于处理不同的任务序列。然而,我不认为这是我想要的。我更新并提供了我的游戏细节。如果你能评论这些,我会很高兴的。不客气。这也有助于解决你的问题。我已经添加了您的任务序列。:)当在任务外定义模式并使用模式作为条件中正则表达式的输入时,它起作用。Ansible不再抱怨无效的jinja2表达式。