ansible regex_search 带变量

ansible regex_search with variable

如何在变量出现在 regex_search 参数中的 ansible 剧本中使用正则表达式找到匹配项?

以下剧本找不到匹配项...当 运行 使用:ansible-playbook playbook.yml

- hosts: localhost
  gather_facts: no
  tasks:
     - set_fact:
          pattern: "{{ 'foobar' | regex_search('foo') }}"
     - set_fact:
          m: "{{ 'beefoo' | regex_search('bee{{ pattern }}') }}"     
     - debug:
          msg: "hi {{ m }}"

取决于您使用的 ansible 版本。据我所知,您可以在大于 2.4.0 的版本中使用该表达式。对于较低版本,您可以使用 regex_search('^' + pattern | string)

所以你的代码将是这样的:

- hosts: localhost
  gather_facts: no
  tasks:
     - set_fact:
          pattern: "{{ 'foobar' | regex_search('foo') }}"
     - set_fact:
          m: "{{ 'beefoo' | regex_search('bee' + pattern | string) }}"     
     - debug:
          msg: 'hi ' + m | string

想与那些可能需要它的人分享我的复杂案例,其中包括积极的前瞻性、积极的回顾和可变的 regex_search

- hosts: localhost
  gather_facts: no
  tasks:
     - set_fact:
          pattern: "{{ 'foobar' | regex_search('foo') }}"
     - set_fact:
          m: "{{ 'beefoo' | regex_search('(?<=prefix-' + pattern | string + '-)' + '([0-9.]+)' + '(?=suffix)') }}"     
     - debug:
          msg: "hi {{ m }}"