Search code examples
regexansibleansible-template

ansible regex_search with variable


How to find a match using regex in ansible playbook where variable appears in the regex_search argument?

The following playbook doesn't find the match... when run using: 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 }}"

Solution

  • Depends on the ansible's version you're using. As far as I know, you can use that expression in a version greater than 2.4.0. For lower versions you can use regex_search('^' + pattern | string).

    So your code will be something like this:

    - 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