以下代码段不起作用:
vars:
var1: "var"
tasks:
- name: "sth"
raw: "anothersth"
register: status
failed_when: var1 in status.stdout
我想在上述示例中使用正则表达式,并在正则表达式中使用变量var1。这也失败了。如果在stdout_lines的开头和结尾重复var1,我想使任务失败。我在想这样的事情:
failed_when:status.stdout中的regex(“ ^ {{var1}} /.*/ {{var1}} $”)
我想知道是否有一种方法可以实现我的目标?
================================================== =============
确切的游戏和描述:
让我解释一下我要做什么:
peers_underlay是主机文件中定义的列表:
peers_underlay: - ip: "172.16.1.2" - ip: "172.16.1.6"
这是戏:
- hosts: leaf-2, spine-1 gather_facts: no tags: [ verify ] vars: bgp_underlay: "show ip bgp summary"
tasks: - name: "underlay bgp test" raw: "{{ bgp_underlay }}" register: underlay_status with_items: "{{ peers_underlay }}" failed_when: not regex(".*/{{ item['ip'] }}/.*/Estab/.*") in underlay_status.stdout_lines
问:“如果在开头和结尾重复var1,则任务失败。”
答:可以测试字符串。例如使用regex
- hosts: localhost
vars:
my_stdout1: 'ABC dlkjfsldkfjsldkfj ABC'
my_stdout2: 'alkdjflaksdjflakdjflaksjdflaksdjflasj'
var1: 'ABC'
my_regex: '^{{ var1 }}(.*){{ var1 }}$'
tasks:
- debug:
msg: my_regex match my_stdout1
when: my_stdout1 is regex(my_regex)
- debug:
msg: my_regex match my_stdout2
when: my_stdout2 is regex(my_regex)
给
"msg": "my_regex match my_stdout1"
特定的任务序列将是
vars:
var1: "var"
my_regex: '^{{ var1 }}(.*){{ var1 }}$'
tasks:
- name: "sth"
raw: "anothersth"
register: status
failed_when: status.stdout is regex(my_regex)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句