我需要在直到循环中使用正则表达式模式检查命令标准输出。当我使用 regex_search 显示调试消息时,一切正常:
- name: Checking if node is ready
shell: "kubectl --kubeconfig {{kubeconf}} get nodes"
register: k_output
- debug:
msg: "{{k_output.stdout | regex_search(node_hostname | string + '\\s+Ready')}}"
消息是
ok: [any_node_hostname] => {
"msg": "any_node_hostname Ready"
}
但是,如果我尝试在内部使用该构造,直到条件语句任务因语法错误而失败。
- set_fact:
regexp_pattern: "{{node_hostname | string + '\\s+Ready'}}"
- debug:
msg: "{{regexp_pattern}}"
- name: Checking if node is ready
shell: "kubectl --kubeconfig {{kubeconf}} get nodes"
register: k_output
until: "{{k_output.stdout | regex_search(regexp_pattern)}}" != ""
retries: 5
delay: 10
当我只是将完整字符串复制并粘贴{{k_output.stdout | regex_search(node_hostname | string + '\\s+Ready')}}
到直到条件语句时,没有 set_fact 的相同行为。那么,我怎样才能使用 regex_search 或适合这种情况的东西,直到?